在此挑战中,系统将要求您实现具有两个属性的任何功能(或完整程序)。这些属性是:
您的函数必须是从具有非负整数系数的多项式到非负整数的内射(可逆)函数。这意味着没有两个不相等的输入可以映射到相等的输出。
您的函数必须保留从输入到输出的“按位”总数。这意味着,如果您计算多项式每个系数的1位,则它们的总和应与输出的二进制表示形式中1位的数目相同。例如,它
9
是1001
二进制的,所以它有21
位。
IO
非负整数多项式与非负整数的无限列表相同,因此在某个点之后所有整数均为零。因此,多项式可以由无限列表表示(尽管这可能是不希望的),也可以由列表末尾带有隐式零的有限列表表示。
多项式与有限列表之间的主要区别在于,在列表的末尾添加零将更改列表:
在多项式的末尾添加零不会更改其值:
因此,如果您的函数采用表示多项式的有限列表作为输入,则添加零不得更改其结果。
当将多项式表示为列表时,可以用代表常数项的第一个或最后一个条目来表示它们。例如,您可能具有以下两种可能性之一:
在第一种情况下,将零添加到列表的末尾不应更改结果。在第二种情况下,加零到前方列表的不应该改变的结果。
当然,如果您的语言支持多项式,则可以将其作为输入。
通过任何标准方法,输出应为非负整数输出。
这是代码高尔夫球,因此答案将以字节计分,而字节越少越好。
[]
或[0]
有效的输入?