介绍
人类是一个非凡的物种,但是有时我们很难理解,尤其是对于计算机。特别是,我们似乎喜欢用看似随意的规则以非常复杂的方式编写多项式。
使用这些规则,您可以编写出最短的程序来正确格式化多项式吗?
挑战
输入值
-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
不是。 - 如果要生成实际的指数字符(例如在Tex中),则可以使用,因为它与人类的书写方式更加接近。
- 系数必须没有小数点出现,例如
9x^2
正确,错误9.0x^2
。
1x
-> x
替换不会21x^2
变成2x^2
。
3x^2 + 4
与3x^2+4
?