Aplique uma integral indefinida a uma determinada sequência. As únicas regras que você usará são definidas da seguinte maneira:
Matemática5 pontos c, C e n são todas constantes.
Especificações:
- Você deve poder integrar polinômios a qualquer um dos recursos possíveis:
- Um coeficiente, possivelmente uma fração no formato
(numerator/denominator)
. - Reconhecimento de que e e π são constantes e, em seu uso, podem formar frações ou expressões que as contenham (podem ser mantidas em uma fração como
(e/denominator)
ou(numerator/e)
, ou, se houver expoentesx^(e+1)
)- Além dessas duas constantes especiais, todos os coeficientes serão números reais racionais.
- Um expoente, possivelmente uma fração, no formato
x^(exponent)
- Expressões com
e
ouπ
neles, fora de si, não estarão em expoentes. (você não precisará integrar itens comox^(e+1)
, mas poderá integrarx^(e)
)
- Expressões com
- Pode usar variáveis que não sejam x 1-char (ou seja
f
)- Isso é apenas para os intervalos ASCII 65-90 e 97-122.
- Você não precisa usar regra de cadeia ou integrar
x^(-1)
.
- Um coeficiente, possivelmente uma fração no formato
- A saída deve ter preenchimento (separação entre termos, ie
x^2 + x + C
. - Se não se sabe como integrar com os recursos acima, o programa deve ser impresso
"Cannot integrate "+input
. - Deve ser um programa completo.
Bônus:
- -10% se você imprimir os expoentes "bastante" formatado para remarcação (em vez de
x^2
,x<sup>2</sup>
). - -10% se você imprimir a equação (ie
∫xdx = (1/2)x^2 + C
)
Exemplos:
Entrada:
x
Saída:
(1/2)x^(2) + C
Entrada:
-f^(-2)
Saída:
f^(-1) + C
Entrada:
(1/7)x^(1/7) + 5
Saída:
(1/56)x^(8/7) + 5x + C
Entrada:
πx^e
Saída:
(π/(e+1))x^(e+1) + C
Entrada:
(f+1)^(-1)
Saída:
Cannot integrate (f+1)^(-1)
e
eπ
, os únicos valores em coeficientes serão números racionais? Ou seja, não é necessário lidar com polinômios multivariáveis? 2. Ao dizer " variáveis que não sejam x 1-char ", você está restringindoa-zA-Z
ou pretende incluir outros intervalos Unicode?ln(x) + C
para uma entrada dex^(-1)
?x^(e+1)
não será um integrando, mas pode ser o resultado de uma integração. 2) Não haverá várias variáveis de letras. 3) sim 4) Sim, mas deveria ser(1/56)x^(1/7+1) + C
(cometi um erro nos exemplos).Respostas:
Mathematica 478 * 0,9 = 430,2
Isso cria uma verdadeira função takes que recebe uma String como Entrada. (Isso conta como um programa completo para o Mathematica?)
A versão não-gasta seria:
Observe que as letras gregas são necessárias para poder usar todas as outras letras na entrada.
fonte
MATLAB, 646 x 0,9 = 581,4 bytes
Atualmente, este é um trabalho em andamento usando MATLABs construídos em recursos de integração simbólica. Atualmente, os requisitos foram atualizados para que o formato agora corresponda aos requisitos. Também se qualifica para o segundo bônus de 10%.
Se alguém quiser sugerir maneiras de corrigir a saída ou usar esse código como base para outra resposta, fique à vontade :). Se eu encontrar o tempo, continuarei jogando com ele e ver se consigo pensar em como reformatar a saída.
Atualização: Ok, então, depois de um pouco mais de trabalho, eis como o código está atualmente. Ainda está em andamento, mas agora está mais perto de corresponder à saída necessária.
Aqui estão alguns exemplos do que atualmente produz. Como você pode ver, não está certo, mas se aproximando.
Entradas:
Saídas:
fonte
x^(8/7)/8
que, enquanto matematicamente correto não está na forma que você deseja -(1/8)x^(8/7)
.