Einführung
Menschen sind eine bemerkenswerte Spezies, aber manchmal ist es sehr umständlich, sie zu verstehen - besonders für Computer. Insbesondere scheinen wir es zu mögen, Polynome auf sehr verschlungene Weise mit scheinbar willkürlichen Regeln zu schreiben.
Was ist das kürzeste Programm, das Sie schreiben können, um ein Polynom nach diesen Regeln korrekt zu formatieren?
Herausforderung
Eingang
Eine Liste von ganzen Zahlen zwischen -1000 und 1000 (einschließlich), die die Koeffizienten eines Polynoms darstellen, wobei der letzte Eintrag der Koeffizient von x ^ 0 (die Konstante) ist, der vorletzte der Koeffizient von x ^ 1 usw.
Ausgabe
Ein String, der dieses Polynom in der korrekt formatierten mathematischen Notation des Menschen darstellt.
Regeln:
- Das Vorzeichen des Leitkoeffizienten wird nur angezeigt, wenn es negativ ist.
Right: -x^2+3
Wrong: +x^2+3
- Komponenten mit dem Koeffizienten 0 werden nicht gedruckt (mit Ausnahme des Eckfalles, bei dem alle Koeffizienten 0 * sind).
Right: x^5-x^2+3
Wrong: x^5+0x^4+0x^3-x^2+0x+3
- Koeffizienten
-1
und+1
sollen ohne die 1 angezeigt werden, es sei denn, sie sind die Konstante.
Right: x^5-x^2+1
Wrong: 1x^5-1x^2+1
- Der Exponent wird nur angezeigt, wenn er größer als 1 ist, und die Variable wird nur angezeigt, wenn der Exponent größer als 0 ist.
Right: 3x^3-7x^2+2x+1
Wrong: 3x^3-7x^2+2x^1+1x^0
- * Eckfall: Während Nullwerte normalerweise dazu führen, dass diese Komponente nicht gedruckt wird, sollte die Konstante 0 gedruckt werden, wenn alle Koeffizienten Null sind.
Right: 0
Wrong: 0x+0
Wrong: (nothing)
- Dies ist Code-Golf, also wird der Gewinner das Programm mit den wenigsten Bytes sein.
Beispiel für Ein- und Ausgabe
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
Ich freue mich auf Ihre Lösungen. Habe Spaß!
BEARBEITEN:
- Sie können Operationen mit Leerzeichen umgeben, wenn Sie dies wünschen. Also
3x+5
und3x + 5
beiden geht es gut.3x+ 5
und3x +5
sind es nicht. - Wenn Sie tatsächliche Exponentenzeichen (z. B. in Tex) erzeugen möchten, ist dies zulässig, da dies noch näher an der Schreibweise der Menschen liegt.
- Koeffizienten müssen ohne Dezimalstellen angegeben werden, z. B.
9x^2
ist richtig,9.0x^2
nicht.
1x
-> x
Ersatz ändert sich nicht 21x^2
in 2x^2
.
3x^2 + 4
gegen3x^2+4
?