7
输出基本证明
背景 在某些可能的将来,世界会将其数字系统从十进制(以10 b10为基数或)转换为其他基数(二进制b2,八进制b8,十六进制b16甚至一元b1,在这种情况下,我们很费力!)。因此,为应对这一可能改变世界的事件,您决定对所有程序进行基础验证。这可以通过仅将0s和1s与运算符结合使用以替换现有的数字常量来完成。 但是,只有一个问题:您需要更改大量程序,而将每个数字手动转换为表达式将需要数周!因此,您决定编写一个程序(或函数)来为您确定应替换每个数字的表达式。 输入项 输入将为正整数。您的代码必须能够处理最多1000个整数。 (如果您的代码支持小数和/或负输入,请参阅下面的评分。) 输出量 您的代码必须以至少一种语言输出计算结果为表达式的表达式。这可以是任何语言;它不一定要与您编写的程序或函数相同。此外,此表达式也不必是完整的程序或函数。 为了清楚起见,输出可能包含以下任何操作: 递增/递减 加/加 减去/取反 乘/双(仅在不直接涉及数字的情况下2!) 除法/取模 指数/对数 平方/平方(再次,仅当这些不直接涉及数字时2!) 按位运算(bOR,bAND,bNOT,bXOR,移位) 设置/获取变量 堆栈操作 你可能不使用eval()或输出的任何类似的功能。您也可能在输出中不使用执行上述功能以外的任何功能的功能。 哦,还有另一件事:由于我们希望输出在尽可能多的底数内有效,因此它可能包含的唯一数字常量是0and 1。10除非(ten)这样的数字是不允许的,除非该语言将其解释为a 1和a 0。也不允许使用字符串包含数字,就像使用CJam的A- K(代表10- 20)这样的字符一样,也是不允许的。 测试用例 (所有输出均使用JavaScript,但可以使用其他语言。) 输入1: 2 可能的输出1: 1+1 输入2: 13 可能的输出2: (a=1+1+1)*a+a+1 输入3: 60 可能的输出3: (b=(a=1+1+1+1)*a)*a-a 输入4: 777 可能的输出4: (c=(b=((a=1+1+1+1)*a-a+1)*a)*a+b)+c+c-a+1 输入5: 1000 可能的输出5: Math.pow((a=1+1+1)*a+1,a) 计分 …