最短の数独ソルバーを実装します。
数独パズル:
| 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
@JPvdMerwe:良い点ですが、時間制限を標準化するのは難しいでしょう。
—
snmcdonald
@gnibbler:これは以前に行われた可能性があります(codegolf.seでは行われていません)。コミュニティに価値を追加するだけでなく、解決することはまだ楽しいと思います。特に正直に行った場合はなおさらです。
—
snmcdonald
私はこれが好きです。私は実際のゴルフの解決策を試すことにためらいがちで、数独ソルバーを書くことを考えていました(楽しいエクササイズのようです)。私のように、これまでゴルフをしたことがない人が出発点として使用できるものだと思います。そして、一度思いついたら、ゴルフをするかもしれません。
—
アンディ
「ロジックのみで解決可能な」問題は非常に曖昧です。おそらく、a)行、列、およびブロックにない値のセルに値を書き込むb)行、列の1か所にしか入れられない数値を識別する、またはブロックし、そこに書き込む?
—
xnor