数独とは新聞*1や週刊誌でよく見かける n X n (n は完全平方で、通常は 9 が使用されている)個の数字を n 個からなるブロック(nの平方根 X nの平方根:n=9であれば、3 X 3)に分割したパズル。別名ナンプレ。イギリスなど、欧米でも人気を博しており、2006年には第1回の世界選手権が開催された。その結果として、この sudoku パッケージが生まれたのであろう。
2.0が出ました、大幅に変更され、GUIやヒントを与える関数が追加されました。
CRANよりsudokuパッケージを入手し、ロードする。
library(sudoku)
sudoku(数独パズルのファイルまたは配列)
数独パズルのサンプルファイル"puz1.txt"。'-'は空白(虫食い)を表す。
-6-1-4-5- --83-56-- 2-------1 8--4-7--6 --6---3-- 7--9-1--4 5-------2 --72-69-- -4-5-8-7-
これは表にすると、以下のようになる。
6 | 1 | 4 | 5 | |||||
8 | 3 | 5 | 6 | |||||
2 | 1 | |||||||
8 | 4 | 7 | 6 | |||||
6 | 3 | |||||||
7 | 9 | 1 | 4 | |||||
5 | 2 | |||||||
7 | 2 | 6 | 9 | |||||
4 | 5 | 8 | 7 |
さてこのパズルを以下のコマンドを実行して解いてみよう。
sudoku("puz1.txt", dir=system.file(package="sudoku"))
実行結果は以下のとおり。
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [1,] 9 6 3 1 7 4 2 5 8 [2,] 1 7 8 3 2 5 6 4 9 [3,] 2 5 4 6 8 9 7 3 1 [4,] 8 2 1 4 3 7 5 9 6 [5,] 4 9 6 8 5 2 3 1 7 [6,] 7 3 5 9 6 1 8 2 4 [7,] 5 8 9 7 1 3 4 6 2 [8,] 3 1 7 2 4 6 9 8 5 [9,] 6 4 2 5 9 8 1 7 3
表にすると
9 | 6 | 3 | 1 | 7 | 4 | 2 | 5 | 8 |
1 | 7 | 8 | 3 | 2 | 5 | 6 | 4 | 9 |
2 | 5 | 4 | 6 | 8 | 9 | 7 | 3 | 1 |
8 | 2 | 1 | 4 | 3 | 7 | 5 | 9 | 6 |
4 | 9 | 6 | 8 | 5 | 2 | 3 | 1 | 7 |
7 | 9 | 1 | 4 | |||||
5 | 2 | |||||||
7 | 2 | 6 | 9 | |||||
4 | 5 | 8 | 7 |
赤字は答え。
各レベルごとのパズルあり