给定任意整数x> 0和任意基数y> 3。
- 将x的所有数字加起来(如果写在设置的基数中)。
- 将此乘以最高位数(始终为
base -1
)。 - 重复直到该值是
(y - 1) ^ 2
搜索的是迭代次数和步骤数。
范例1:
x= 739
y= 7
searched: (7 - 1) ^ 2 = 36
based: (b7)2104
sum: (dec)7
mul: (dec)42
based: (b7)60
sum: (dec)6
mul: (dec)36
2 steps needed -> answer is [2, 739, 42, 36] or [739, 42, 36, 2]
范例2:
x = 1712
y = 19
s: 324
step1: 1712 -> 360
step2: 360 -> 648
step3: 648 -> 324
3 steps needed -> answer is [3, 1712, 360, 648, 324] or [1712, 360, 648, 324, 3]
特殊:
在某些情况下(某些组合的底数为3),您将无法(y - 1) ^ 2
喜欢x = 53
和y = 3
。因此,该值y
必须大于3,您可以忽略它。
迭代次数必须是第一个或最后一个值
这是代码高尔夫最低字节数获胜。
要求答案中的步骤数似乎是对该问题的不必要补充。我的解决方案必须添加21个字节做什么额为找到一个列表的长度和减去1
—
ngenisis
@ngenisis仅按输出顺序排列,但忽略了该方法(数组,堆栈,delim。字符串,多个字符串...)。跟踪2种不同的事物(最终价值和计数)可以避免“盲目”收集价值(或多或少),这对我来说是一个很好的补充。也许另一种方法将在计算时需要再增加5个字节,但在计数部分会节省8个字节(这里只是随机数)。
—
Dirk Reichel