最近,我发布了一个有关Diffy游戏的问题,但尚未得到解答。很好,这个问题确实很困难,但是我想对Diffy游戏提出一个更简单的问题,以便我们能够解决问题。
Diffy如何运作
Diffy游戏的工作方式如下:从一个非负整数列表开始,在本示例中,我们将使用
3 4 5 8
然后取相邻数字之间的绝对差
(8) 3 4 5 8
5 1 1 3
然后重复。重复直到您意识到自己已经进入循环。通常,游戏会从头开始。
3 4 5 8
5 1 1 3
2 4 0 2
0 2 4 2
2 2 2 2
0 0 0 0
0 0 0 0
大多数游戏都以全零的字符串结尾,这被认为是失败状态,但是很少有游戏陷入较大的循环。
任务
给定Diffy游戏的开始状态,确定游戏是否最终达到全零状态。您应该为两个状态中的每个状态输出一个Truthy或Falsy值。哪个对应哪个都没有关系。
目标是最大程度地减少源中的字节数。
1 1 0
是周期性的,42 42 41
这样的状态也是如此。
n
为奇数,除非所有数字均相等,否则游戏不会为零。如果长度是2的幂,则它始终为零。
n
元素和最大值的列表最多m
需要n * bit_length(m)
步数。因此,n*m
也是一个上限。较高的上限是t(n) * bit_length(m)
,其中t(n)
2的最大乘方是的因子n
。