読者です 読者をやめる 読者になる 読者になる

Sudoku

Sudoku-3525-hard, the guardian, 27 Aug, 2016 - 数独を Mathematica で解く

目次へ Sudoku 3525 hard, the guardian, Sat 27 Aug 2016 を Mathematica で解いた。 Sudoku 3525 hard Step by step の解答 このパズルは NakedSingle (裸のシングル)、Hidden Singles (隠れたシングル)を使って答えが求まる。 この表の1番目の手順が意味…

Sudoku(数独) を Mathematicaで解く(12): code5: HiddenSingles

目次へ 第9 回で HiddenSingleRow、第10回で HiddenSingleColumn、第9 回で HiddenSingleBox を説明した。今後これを使うことを考慮して、関数のまとめ作る。これを code5:HiddenSingle と呼ぶことにする。 (* code5: HiddenSigle *) (* == findHiddenSingle…

Sudoku(数独) を Mathematicaで解く(11): HiddenSinglesBox

目次へ ボックス内で「隠れたシングル」を探す 「裸のシングル」 が見つからないゲームの行列は ini4 であった。ini4 については第9回を参照。 mapini4 = makeMap[ini4]; Show[Rasterize[plotMapGridsColoredByNakedSingle[ini4]], ImageSize -> 350] 候補図…

Sudoku(数独) を Mathematicaで解く(10): HiddenSingleColumn

目次へ 10.1 HiddenSingleColumn について この関数は前回(9)で説明した行に関する探索 HiddenSingleRow とほぼ同じです。行を列に変えればよい。 「裸のシングル」 が見つからないゲームの行列は ini4 であった。前回の(9)に定義が書いてあります。 mapini4…

Sudoku(数独) を Mathematicaで解く(9): HiddenSinglesRow

目次へ 9.1 HiddenSingle の説明 Naked Single「裸のシングル」が見つからない場合には、次の選択として Hidden Single「隠れたシングル」を探す。 この解法は The logic of sudoku by Andrew C Stuart に解説が書いてある。これを参考にしている。 http://s…

Sudoku(数独) を Mathematicaで解く(8): Main(1)

目次へ 8.1 NakedSingleの探索を繰り返す 前回の(7) で示した code1,code2,code3,code4 の後に、これから示す Main を追加して、NakedSingleの探索を繰り返すプログラムを作ります。このプログラムの構造は(6)で示した図になります。 Step0: 初期定義 (* mai…

Sudoku(数独) を Mathematicaで解く(7): codes

目次へ 今後、ノートブック上にプログラムを作るために、(6)で説明したグループ化された関数の集まり code1, code2, code3, code4 を整理して以下に示します。 コードの中に書いてある (* begin{Section} *) と (* end{Section} *) はノートブックの中ではコ…

Sudoku(数独) を Mathematicaで解く(6) Notebookの構造

目次へ 6. Notebook でプログラムを作る Mathematica のインターフェイスは Notebook です。そこに Mathematica のコマンドを書き入れ、shift + return を入力すれば実行でき、計算結果が表示される。インタープリター形式なので、プログラムの開発には大変…

Sudoku(数独) を Mathematicaで解く(5): Coloring

目次へ 5.1 数独格子の数字に色をつける 数独格子(グリッド)に埋めこんだ数字に色を付けて分かりやすく表示する方法について説明する。 新しい関数 plotGameSeq の定義を以下に示す。 plotGameSeq[ini_?MatrixQ,xylist:{{_,_}..}]:=Grid[ini, ItemStyle->{Di…

数独(Sudoku)をMathematica で解く(4): NakedSingle

目次へ 前回で作った関数makeMapを使って 候補のリストmapini を作る。これを表示したものが次である。 mapini=makeMap[ini]; Show[Rasterize[plotMapGrid[ini,mapini]],ImageSize->350] この候補図の中に「シングル」(要素の数が1個)の候補として、3行2列…

Sudoku(数独) を Mathematicaで解く(3): makeMap

>|| String peace="abc"; ||

Sudoku(数独) を Mathematicaで解く(2): 候補図(map)

(1) で示したブランクに入れるべき候補の図について説明します。 これを表現するデータは次になります。9行9列の行列の要素がリストになっています。 {{{2,4,6},{},{2,4,6,9},{2,3,8,9},{1,3,8,9},{1,2,8,9},{},{1,2,8},{3,6,8,9}}, {{},{},{},{2,7,8,9},{7,…

Sudoku(数独) を Mathematicaで解く(1) 表現と表示

Sudoku この Sudoku(数独) の問題は、日経新聞10月19日(土)の付録に「ナンバープレース」として載っていた問題です。