附加号码游戏
编写一个函数/程序,该函数/程序接受2个整数参数, 整数参数或整数变量,起始编号和最大迭代次数。该代码应执行以下游戏示例以构造一个新数字,并重复直到该数字剩下一位数字为止。例如。
3 7 2 = (3 + 7) & (7 + 2) = 10 9
1 0 9 = (1 + 0) & (0 + 9) = 1 9
1 9 = (1 + 9) = 10
1 0 = (1 + 0) = 1
基本上,取每个数字并将其添加到其邻居中,然后再添加下一个相加的结果。
最大迭代次数是为了保护无限循环,当达到最大循环次数时,代码应转储最后5个数字步。通过达到一位数字结束时,应该发生相同的输出。如果少于5个步骤,则仅输出有效数字。
输出应显示为(Step: Number),包括已完成或已终止步骤的最后5个步骤:
func(3541, 50) 会产生这种确切的输出格式:
6: 1411
7: 552
8: 107
9: 17
10: 8
func(3541, 5) 会产生:
1: 895
2: 1714
3: 885
4: 1613
5: 774
整个计算为:
1: 895
2: 1714
3: 885
4: 1613
5: 774
6: 1411
7: 552
8: 107
9: 17
10: 8
如果少于5个步骤,则只需打印已执行的步骤即可。
仅使用内置库,参数可以在任何地方(无论哪种选择语言都最简单)。没有最大整数大小的限制,如果有溢出,请使其崩溃。
鉴于从困惑的角度来看这并不太困难,我将在周日25日(周日)晚上8点(UTC + 8)之前考虑是否接受已接受的答案,届时所有语言中最短的将成为获胜者。
编辑:
祝贺霍华德,以48 GolfScript的答案获胜。
特别要提到第二名的马里纳斯,答案是66 APL 。
我个人最喜欢的(偏爱JavaScript)是core1024的答案。
func(3541, 5)应该打印5步还是10步?