正方形顶点4盏灯泡状态迭代问题:第1000步状态求解
正方形顶点4盏灯泡状态迭代问题:第1000步状态求解
问题背景
正方形四个顶点A、B、C、D上各有一盏灯泡,初始状态全部为亮。迭代规则如下:
- 每往前走一步时,如果前一个顶点的灯泡是亮的,就切换下一个顶点灯泡的状态(亮变灭,灭变亮);
- 如果前一个顶点的灯泡是灭的,则不对下一个灯泡做任何操作。
给大家举个实际迭代的例子:
从A出发走到B:因为A初始是亮的,所以切换B的状态(B从亮变灭);
从B走到C:此时B是灭的,所以保持C的亮状态不变;
从C走到D:C是亮的,切换D的状态(D从亮变灭);
从D走回A:D是灭的,保持A的亮状态不变。
走完4步后,灯泡状态为:A亮、B灭、C亮、D灭。
我们需要求解的核心问题是:第1000步时,四盏灯泡的状态是什么?
我的解法思路
手动算到第1000步显然不现实,所以我想到了「找循环周期」的方法:
- 模拟每一步的迭代过程,全程记录灯泡的状态;
- 当发现某个状态重复出现时,就能确定状态的循环周期;
- 最后用模运算快速定位第1000步在循环中的位置,直接得到结果。
实操与结果
我用Python写了个小脚本模拟整个迭代过程,跑下来发现了清晰的循环规律:
- 状态
[0, 0, 1, 0](注:数组顺序对应A、B、C、D,0代表灭,1代表亮)首次出现在第39步,持续到第42步; - 之后这个状态在第99-102步再次出现,后续每60步就会完整重复一次这个周期。
通过周期计算:(1000 - 39) % 60 = 961 % 60 = 1,说明第1000步的状态和第39+1=40步的状态完全一致,也就是[0, 0, 1, 0]——即A灭、B灭、C亮、D灭。
备注:内容来源于stack exchange,提问作者Son Mat Bukucu
相关产品推荐
相关产品推荐

