熄灯拼图

点击一个方格,它自己以及上下左右相邻的方格会一起翻转亮灭。把所有灯熄灭即可通关。

点击次数: 0亮着的灯: 0已用提示: 0

可用 Tab 键在方格间移动,按 Enter 或空格键点击。提示会用红框标出当前局面下最短解法中的一格。

玩法与界面说明

棋盘是 4×4、5×5 或 6×6 的方格,黄色表示灯亮,深色表示灯灭。点击一格,该格和与它上下左右相邻的格会同时翻转;对角线方向不受影响, 棋盘边缘缺少的邻格直接跳过,所以点角上的格会改变 3 盏灯,点边上的格改变 4 盏,点中间的格改变 5 盏。每局从随机的亮灯图案开始, 灯全部熄灭就通关。通关后会同时显示你的点击次数和这一局的理论最少次数。

背后的数学原理

每盏灯只有亮和灭两种状态,点击就是翻转,翻转两次相当于没动。因此点击顺序不影响结果,每一格最终只有“点”或“不点”两种情况。 5×5 的点击方案共有 225 种。把棋盘写成由 0 和 1 组成的向量,加法按模 2(即异或)进行,点击方案与最终局面之间就是一个矩阵乘法。 解题等价于解模 2 的线性方程组 Mx = b(b 是初始图案,x 是要点击的格子),用高斯消元即可。本页的提示和最少点击数就是用同样的方法实时计算的。

解的个数取决于有没有“静默图案”:即点下去棋盘完全不变的非空点击组合。存在静默图案时,可解的开局会有多个解,同时也有一部分开局根本无解。 下表是页面构建时按上述规则直接算出来的结果。

棋盘格数亮灯图案总数静默图案维数可解图案数可解比例每个可解图案的解数
4×41665,53644,0961/1616
5×52533,554,43228,388,6081/44
6×63668,719,476,736068,719,476,736100%1

最大的 6×6 反而最规整:没有静默图案,任何开局都有解,而且解唯一。4×4 格数最少,静默图案却有 4 维,只有 1/16 的开局可解, 每个可解开局有 16 种解法。5×5 介于两者之间,四分之一的开局可解,每个有 4 种解。5×5 的 3 个非空静默图案如下,把它们整体点一遍棋盘不变, 所以找到一个解就能顺带得到另外 3 个解。

□ ■ ■ ■ □
■ □ ■ □ ■
■ ■ □ ■ ■
■ □ ■ □ ■
□ ■ ■ ■ □
(按下 16 格)
■ □ ■ □ ■
■ □ ■ □ ■
□ □ □ □ □
■ □ ■ □ ■
■ □ ■ □ ■
(按下 12 格)
■ ■ □ ■ ■
□ □ □ □ □
■ ■ □ ■ ■
□ □ □ □ □
■ ■ □ ■ ■
(按下 12 格)

本游戏出的题一定有解:先从全灭的棋盘出发,随机点击若干格得到初始图案,反向点回去就能全灭。若随机结果恰好全灭,会再点一次中心格,避免一开局就通关。 随机数来自浏览器的 Math.random,适合游戏,不用于安全场景。

点哪里影响多大

棋盘角格(改变 3 盏)边格(改变 4 盏)内部格(改变 5 盏)
4×4484
5×54129
6×641616

手动解法:逐行追灯

不懂线性代数也能解的经典方法叫“追灯”:第一行哪格亮,就点它正下方的格,第一行就灭了;接着对第二行、第三行依次这样做, 最后只会剩最后一行可能还亮着。最后一行全灭就成功了,否则就改变最初点击第一行的组合再来一次。第一行的点法决定了下面所有行, 所以只需尝试第一行的 2 的“棋盘宽度”次方种组合。在可解的随机局面上验证:6×6 的 64 种第一行点法中恰有 1 种成功,5×5 的 32 种中有 4 种, 4×4 的 16 种全部成功,与上表是同一回事。提示按钮能省掉试错,直接告诉你答案中的一格。

已验算的例子

例 1:点两次得到 8 盏灯。 在全灭的 5×5 棋盘上点左上角和正中心各一次,角上 3 盏与中心 5 盏互不重叠,共 8 盏亮着。再点这两格即可复原, 而一次点击最多改变 5 盏灯,不可能一步熄灭 8 盏,所以最少恰好 2 次。亮灯数是 8,只需 2 步,可见亮灯数和步数并不成正比。

例 2:全亮的棋盘。 用与本页相同的消元算法求解,最少点击数在 4×4 为 4 次,5×5 为 15 次,6×6 为 28 次,并已把解代回确认全部熄灭。 格数从 16 增到 25,步数却从 4 增到 15,增长很快。

例 3:最难的局面。 4×4 和 5×5 可以把所有可解图案全部枚举。4×4 的 4,096 个可解图案中,最难的也只需 7 次; 5×5 的 8,388,608 个可解图案中,最难的需要 15 次,与全亮棋盘相同。6×6 数量太大,这里没有做同样的枚举,所以不给出最大值。

常见误区

使用限制

提示和最少步数都是针对当前局面的计算结果。同样步数的解可能不止一个,所以红框标出的格子是一个正确选择,而不是唯一选择。 游戏不保存成绩,刷新页面后点击数和提示数都会清零,也没有排行榜或限时,只是供你挑战自己的小游戏。

怎么玩更有收获

先在 4×4 上反复使用“重玩本题”,熟悉点哪里会灭哪里;再到 5×5 上不用提示练习追灯;最后挑战解唯一的 6×6,看看你的点击次数能否接近页面显示的最少次数。

常见问题

每一局都一定有解吗?

是的。题目是从全灭的棋盘随机点击生成的,把同样的点击再做一遍就能全灭,不会出现无解的局面。

提示是怎么得出的?

页面对当前局面做模 2 高斯消元,若有多个解就取点击最少的那个,并标出其中一格。可能存在步数相同的其他解法。

6×6 比 5×5 更难吗?

手算更繁琐,但结构上最简洁:任何开局的解都恰好唯一。体感难度因人而异。

能比显示的最少次数更少通关吗?

不能。最少次数是从你的初始图案出发能熄灭全部灯的最小点击数,你的次数最多与它相等。

键盘和触屏能玩吗?

可以。鼠标和触屏都行;键盘用 Tab 移动,Enter 或空格点击,点击后焦点仍停在原来的格子上。

相关游戏