谜题探险:你听说过数独,但听说过“数独杀”吗?

一位计算机科学教授鼓励他的学生打破数独规则

我猜想,本专栏的读者中,很少有人不熟悉数独。但对于“数独杀”(Sudokill)这款为我教授的研究生课程发明的游戏,情况就未必如此。“数独杀”是一款双人游戏,玩家试图迫使对方违反数独规则。

这里简单回顾一下数独。目标是用 1 到 9 之间的数字填充一个九乘九的网格。每个数字在每一行、每一列以及从左上角开始的每个不重叠的三乘三方框中都只能出现一次。

在下面的例子中,我们用 0 表示空格。

0 0 0 0 0 0 0 0 7 7 0 4 0 0 0 8 9 3 0 0 6 8 0 2 0 0 0 0 0 7 5 2 8 6 0 0 0 8 0 0 0 6 7 0 1 9 0 3 4 0 0 0 8 0 0 0 0 7 0 4 9 0 0 6 0 0 0 9 0 0 0 0 4 5 9 0 0 0 1 0 8


支持科学新闻

如果您喜欢这篇文章,请考虑通过以下方式支持我们屡获殊荣的新闻报道: 订阅。通过购买订阅,您将有助于确保未来能够看到更多关于塑造我们当今世界的发现和想法的有影响力的故事。


考虑左下角的方框

0 0 0             7 0 4             0 0 6             0 0 7             0 8 0             9 0 3             0 0 0 7 0 4 9 0 0 6 0 0 0 9 0 0 0 0 4 5 9 0 0 0 1 0

8

我们知道左下角方框中的五个空格,其中一个必须是 7。因为第三列有一个 7,第七行(从上往下数)也有一个 7,所以 7 的唯一合法位置是 6 的右边,得到:

0 0 0             7 0 4             0 0 6             0 0 7             0 8 0             9 0 3             0 0 0 7 0 4 9 0 0 6 7 0 0 9 0 0 0 0 4 5 9 0 0 0 1 0

8

相反,下面这种情况就是不合法的:

0 0 0             7 0 4             0 0 6             0 0 7             0 8 0             9 0 3             0 7 0 7 0 4 9 0 0 6 0 0 0 9 0 0 0 0 4 5 9 0 0 0 1 0

8

...因为这样同一行就会有两个 7。

在“数独杀”中,两名玩家轮流行动,每次行动都是用一个数字替换一个空格。第一名玩家称为行玩家,第二名玩家称为列玩家。最初,行玩家可以进行任何合法的数独移动。随后,列玩家必须在行玩家最后一步移动的同一列中移动,而行玩家必须在列玩家最后一步移动的同一行中移动。如果一名玩家做出非法的数独移动,即使是意外的,该玩家也会输掉比赛。

如果我们用 0 或字母表示空格,行玩家在有 x 的地方移动

0 0 6 0 0 0 0 0 0 8 4 0 3 x 2 0 0 0 3 2 0 0 0 5 0 7 4 0 6 0 0 9 0 8 0 0 0 0 0 6 2 4 0 0 0 0 0 2 0 3 0 0 6 0 2 1 0 9 0 0 0 8 7 0 0 0 4 0 3 0 2 5 0 0 0 0 0 0 1 0 0

那么列玩家必须替换同一列中的一个空格(用 y 标记)

0 0 6 0 y 0 0 0 0 8 4 0 3 x 2 0 0 0 3 2 0 0 y 5 0 7 4 0 6 0 0 9 0 8 0 0 0 0 0 6 2 4 0 0 0 0 0 2 0 3 0 0 6 0 2 1 0 9 y 0 0 8 7 0 0 0 4 y 3 0 2 5 0 0 0 0 y 0 1 0 0

假设列玩家选择了用大写 Y 标记的位置

0 0 6 0 y 0 0 0 0 8 4 0 3 x 2 0 0 0 3 2 0 0 y 5 0 7 4 0 6 0 0 9 0 8 0 0 0 0 0 6 2 4 0 0 0 0 0 2 0 3 0 0 6 0 2 1 0 9 y 0 0 8 7 0 0 0 4 Y 3 0 2 5 0 0 0 0 y 0 1 0 0

然后,行玩家必须在用 z 标记的位置中移动一个位置
0 0 6 0 y 0 0 0 0 8 4 0 3 x 2 0 0 0 3 2 0 0 y 5 0 7 4 0 6 0 0 9 0 8 0 0 0 0 0 6 2 4 0 0 0 0 0 2 0 3 0 0 6 0 2 1 0 9 y 0 0 8 7 z z z 4 Y 3 z 2 5 0 0 0 0 y 0 1 0 0

到游戏后期,以下规则至关重要:如果行玩家最后移动的列中没有空格,则列玩家可以移动到任何地方。同样,如果列玩家最后移动的行中没有空格,则行玩家可以移动到任何地方。

热身谜题
假设在以下情况下(其中字母代表空格)轮到行玩家移动,并且行玩家可以移动到任何地方

5 7 6 1 4 9 2 3 8 8 4 9 3 7 2 5 1 6 3 2 1 8 6 5 9 7 4 4 6 3 7 9 1 8 5 2 1 5 8 6 2 4 7 9 3 7 9 2 5 3 8 4 6 1 2 1 4 9 5 6 3 8 7 9 8 7 4 1 3 6 A 5 6 3 5 B 8 7 1 C 9

行玩家如何才能迫使获胜(即迫使列玩家进行非法移动)?

热身谜题的答案

现在轮到您了,但这次我们将偏爱列玩家。

1. 在以下棋盘中,列玩家是否可以在两步之内强制获胜?(这里列玩家可以从任何地方开始移动。)

8 1 5 3 4 9 2 6 7 7 A 4 B 5 1 8 9 3 3 9 6 8 7 2 4 1 5 1 4 7 5 2 8 6 3 9 C 8 2 9 3 6 D E 1 9 6 3 F 1 7 G H I 2 3 1 J 8 K 9 5 6 6 7 8 1 9 5 2 3 4 L 5 9 2 M 3 1 7 N

谜题 #1 的答案

2. 这是一个更难的问题。在以下情况下,列玩家是否可以在三步之内强制获胜?(同样,列玩家可以从任何地方开始移动。)

7 A 5 8 1 3 2 9 B C D 1 4 7 6 5 E F 3 4 G 2 5 9 H 1 7 9 1 4 5 ? 7 3 2 6 I 5 7 3 6 2 J 4 9 6 2 3 9 4 1 7 K L 1 3 2 6 9 8 4 7 M N 8 O P 2 5 9 3 1 Q 7 9 1 3 R 8 6 2

谜题 #2 的答案

这里有一个邀请。如果您能在初始状态下有更多空格而非赋值的棋盘上产生四步强制获胜,请将其发送至 shasha@cims.nyu.edu。另外,请在纽约大学研究生 Yu Yiwen 设计的网站上玩“数独杀”:http://homepages.nyu.edu/~yy497/projects/showcase/SudokillWebGame

© . All rights reserved.