Введение
Люди - замечательный вид, но иногда мы можем быть очень неловкими, особенно для компьютеров. В частности, нам, кажется, нравится писать многочлены в очень запутанной манере с, казалось бы, произвольными правилами.
Какую самую короткую программу вы можете написать для правильного форматирования полинома с использованием этих правил?
Вызов
вход
Список целых чисел от -1000 до 1000 (включительно), представляющий коэффициенты полинома, причем последняя запись является коэффициентом x ^ 0 (константа), вторая последняя - коэффициентом x ^ 1 и т. Д.
Выход
Строка, представляющая этот многочлен в правильно отформатированных математических обозначениях людей.
Правила:
- Знак ведущего коэффициента отображается только в том случае, если он отрицательный.
Right: -x^2+3
Wrong: +x^2+3
- Компоненты с коэффициентом 0 не печатаются (за исключением углового случая, когда все коэффициенты равны 0 *).
Right: x^5-x^2+3
Wrong: x^5+0x^4+0x^3-x^2+0x+3
- Коэффициенты
-1
и+1
должны отображаться без 1, если только они не являются постоянными.
Right: x^5-x^2+1
Wrong: 1x^5-1x^2+1
- Показатель степени отображается только в том случае, если он больше 1, а переменная отображается только в том случае, если показатель степени больше 0.
Right: 3x^3-7x^2+2x+1
Wrong: 3x^3-7x^2+2x^1+1x^0
- * Угловой случай: хотя нулевые значения обычно приводят к тому, что этот компонент не печатается, если все коэффициенты равны нулю, следует печатать константу 0.
Right: 0
Wrong: 0x+0
Wrong: (nothing)
- Это код-гольф, поэтому победителем станет программа с наименьшим количеством байтов.
Пример ввода и вывода
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
Я с нетерпением жду ваших решений. Повеселись!
РЕДАКТИРОВАТЬ:
- Вы можете окружить операции пробелами, если хотите. Так
3x+5
и3x + 5
ладно.3x+ 5
а также3x +5
нет. - Если вы хотите создать фактические показательные символы (скажем, в тексте), это разрешено, поскольку это даже ближе к тому, как пишут люди.
- Коэффициенты должны появляться без каких-либо десятичных знаков, например
9x^2
, правильно,9.0x^2
нет.
1x
-> x
не меняется 21x^2
на 2x^2
.
3x^2 + 4
против3x^2+4
?