Rで数独

数独とは

 数独とは新聞*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-

 これは表にすると、以下のようになる。

6145
8356
21
8476
63
7914
52
7269
4587

 さてこのパズルを以下のコマンドを実行して解いてみよう。

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

 表にすると

963174258
178325649
254689731
821437596
496852317
7914
52
7269
4587

 赤字は答え。

A new Sudoku Solver in R. Part 1

Sudoku Automation Solver Challenge - R

数独パズル解法アルゴリズム

リンク

sudoku break


*1 朝日の土曜版等

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-03-25 (土) 11:19:17