Introdução
Os seres humanos são uma espécie notável, mas às vezes podemos ser muito difíceis de entender - principalmente para computadores. Em particular, parecemos gostar de escrever polinômios de uma maneira muito complicada, com regras aparentemente arbitrárias.
Qual é o programa mais curto que você pode escrever para formatar um polinômio corretamente usando essas regras?
Desafio
Entrada
Uma lista de números inteiros entre -1000 e 1000 (inclusive), representando os coeficientes de um polinômio, com a última entrada sendo o coeficiente de x ^ 0 (a constante), a segunda última sendo o coeficiente de x ^ 1, etc.
Saída
Uma string que representa esse polinômio na notação matemática corretamente formatada de humanos.
Regras:
- O sinal no coeficiente à esquerda é mostrado apenas se for negativo.
Right: -x^2+3
Wrong: +x^2+3
- Componentes com coeficiente 0 não são impressos (exceto para a caixa de canto onde todos os coeficientes são 0 *).
Right: x^5-x^2+3
Wrong: x^5+0x^4+0x^3-x^2+0x+3
- Coeficientes
-1
e+1
devem ser exibidos sem o 1, a menos que sejam a constante.
Right: x^5-x^2+1
Wrong: 1x^5-1x^2+1
- O expoente é mostrado apenas se for maior que 1 e a variável é mostrada apenas se o expoente for maior que 0.
Right: 3x^3-7x^2+2x+1
Wrong: 3x^3-7x^2+2x^1+1x^0
- * Caixa de canto: enquanto os valores zero geralmente resultam na impressão desse componente, se todos os coeficientes forem zero, a constante 0 deve ser impressa.
Right: 0
Wrong: 0x+0
Wrong: (nothing)
- Isso é código-golfe, então o vencedor será o programa com o menor número de bytes.
Exemplo de entrada e saída
Input: Output:
[0] 0
[0,0] 0
[0,-1,35,0] -x^2+35x
[5,1,7,-9] 5x^3+x^2+7x-9
[100,0,0,-1] 100x^3-1
[931,21,-11,1] 931x^3+21x^2-11x+1
Estou ansioso para ver suas soluções. Diverta-se!
EDITAR:
- Você pode cercar as operações por espaço em branco, se desejar. Então,
3x+5
e3x + 5
ambos estão bem.3x+ 5
e3x +5
não é. - Se você deseja produzir caracteres expoentes reais (digamos, em Tex), isso é permitido, pois é ainda mais próximo de como os humanos escrevem.
- Os coeficientes devem aparecer sem decimais, por exemplo,
9x^2
está correto,9.0x^2
não é.
1x
-> x
substituição não muda 21x^2
em 2x^2
.
3x^2 + 4
versus3x^2+4
?