实施最短的数独求解器。
数独拼图:
| 1 2 3 | 4 5 6 | 7 8 9
-+-----------------------
A| 3 | 1 |
B| 6 | | 5
C| 5 | | 9 8 3
-+-----------------------
D| 8 | 6 | 3 2
E| | 5 |
F| 9 3 | 8 | 6
-+-----------------------
G| 7 1 4 | | 9
H| 2 | | 8
I| | 4 | 3
回答:
| 1 2 3 | 4 5 6 | 7 8 9
-+-----------------------
A| 8 3 2 | 5 9 1 | 6 7 4
B| 4 9 6 | 3 8 7 | 2 5 1
C| 5 7 1 | 2 6 4 | 9 8 3
-+-----------------------
D| 1 8 5 | 7 4 6 | 3 9 2
E| 2 6 7 | 9 5 3 | 4 1 8
F| 9 4 3 | 8 1 2 | 7 6 5
-+-----------------------
G| 7 1 4 | 6 3 8 | 5 2 9
H| 3 2 9 | 1 7 5 | 8 4 6
I| 6 5 8 | 4 2 9 | 1 3 7
规则:
- 假设所有迷宫只能通过逻辑解决。
- 所有输入将为81个字符长。缺少的字符将为0。
- 将解决方案输出为单个字符串。
- 您可以根据需要在内部存储“网格”。
- 该解决方案必须使用非猜测的解决方案。(请参阅数独求解器)
I / O示例:
>sudoku.py "030001000006000050500000983080006302000050000903800060714000009020000800000400030"
832591674496387251571264983185746392267953418943812765714638529329175846658429137
您确实应该添加一个时间限制。
—
JPvdMerwe,2011年
@JPvdMerwe:好点,但是时间限制很难标准化。
—
snmcdonald
@gnibbler:之前可能已经做过(但在codegolf.se上没有)。我认为解决问题以及为社区增加价值仍然会很有趣,特别是如果人们诚实地做下去的话。
—
snmcdonald
我喜欢这一个。我一直在犹豫不决尝试实际的高尔夫解决方案,并且我一直在考虑编写Sudoku求解器(这似乎很有趣)。我认为这是像我这样从来没有打过高尔夫球的人可以作为起点的东西。一旦拿出一个,我可能会打高尔夫球。
—
安迪(Andy)
“只能通过逻辑解决”的问题非常模糊。您的意思是,也许仅使用了以下基本步骤:a)在单元格中写入其值不在其行,列和块中的值b)标识只能在其行,列中某个位置出现的数字,或将其写入其中?
—
xnor 2014年