謎題探險:你聽說過數獨,但聽說過“數獨殺”嗎?

一位計算機科學教授鼓勵他的學生打破數獨規則

我猜想,本專欄的讀者中,很少有人不熟悉數獨。但對於“數獨殺”(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

© .