假设我们从质数的无限列表开始:
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, ...
然后,我们反复计算每对数字之间的绝对差:
[1, 2, 2, 4, 2, 4, 2, 4, 6, 2, 6, 4, 2, 4, 6, 6, 2, 6, 4, ...
[1, 0, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 2, 2, 0, 4, 4, 2, ...
[1, 2, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 4, 0, 2, ...
[1, 2, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 4, 2, ...
请注意,每次的前导数字都是1。吉尔布雷思的猜想预言着这种情况将永远存在。
前导数字将停止为1的唯一方法是在其后的下一个数字既不是0也不是2。第二个数字将不是0或2的唯一方法是如果此后的数字也不是0 0或2。依此类推。
除前导1以外,最早的数字的索引既不是0也不是2,在连续的一对序列之间绝不能下降超过1。这个事实已被用来为序列(如果有的话)的第一个元素可能不具有1的下限设置非常强的下限。
在此挑战中,将为您提供序列的索引,并且您必须输出该序列中第一个数字的索引,该数字不是前导1,也不是0或2。
例如,在上面的第4个绝对差序列中:
[1, 2, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 4, 2, ...
除第一个条目外,第一个既不为零也不为2的条目是第15个位置,索引为14。因此,如果输入为4,则将输出14。
对于1到30的输入,输出应为:
[3, 8, 14, 14, 25, 24, 23, 22, 25, 59, 98, 97, 98, 97, 174, 176, 176, 176, 176, 291, 290, 289, 740, 874, 873, 872, 873, 872, 871, 870]
这是OEIS A000232。
假设您有1个索引输入和0个索引输出。您可以从任何常数整数开始索引输入和输出,只要您可以接受与所有序列相对应的输入范围即可。
要求:您的解决方案必须在最多30分钟的输入下最多运行1分钟。如果距离足够近以至于取决于计算机规格,则允许这样做。
最短的代码胜出。