目次へ戻る
8.1 NakedSingleの探索を繰り返す
前回の(7) で示した code1,code2,code3,code4 の後に、これから示す Main を追加して、NakedSingleの探索を繰り返すプログラムを作ります。このプログラムの構造は(6)で示した図になります。
実行は code1, code2, code3, code4 の実行後に以下の step0 から始め step1, step2, step3 と進める。
Step0: 初期定義
(* main *)
(* begin{Section} *)
(* begin{Subsection}: Step0:ini の定義 *)
ini=Module[{b},{
{b,7,b, b,b,b, 5,b,b},
{5,3,1, b,b,b, 4,b,b},
{8,b,b, 6,4,b, b,b,b},
{b,2,b, b,b,4, b,3,5},
{b,1,b, b,b,b, b,6,b},
{9,4,b, 1,b,b, b,7,b},
{b,b,b, b,2,3, b,b,1},
{b,b,3, b,b,b, 8,9,2},
{b,b,7, b,b,b, b,4,b}}/.b->Null];
Show[Rasterize[plotGame[ini]],ImageSize ->250]
Step1: ini -> ini2
ゲームの行列 (ini) を入力として findNakedSiggle で探して見つかった答えを書き込んで次の行列 (ini2) を作る。
(* begin{Subsection}: Step1: ini -> ini2 *)
mapini=makeMap[ini];
findNakedSingle[mapini]
⇒ {{9, {3, 2}}, {2, {6, 7}}, {8, {6, 9}}, {5, {7, 8}}}
(* Show[Rasterize[plotMapGridsColoredByNakedSingle[ini]],ImageSize->350] *)
ini2=makeMatrixByNakedSingle[ini];
xylist=First[#]&/@rules; (* 追加された数字の位置のリスト *)
Show[Rasterize[plotGameSeq[ini2, xylist]], ImageSize -> 250]
Step2: in2 -> ini3
更新された行列 ini2 を入力として findNakedSingle を使って答えを探す。見つかった答えを書き込んで行列 ini3 を作る。
(* begin{Subsection}: Step2:ini2 -> ini3 *)
mapini2=makeMap[ini2];
findNakedSingle[mapini2]
⇒ {{2,{3,3}},{9,{5,7}}}
(* Show[Rasterize[plotMapGridsColoredByNakedSingle[ini2]],ImageSize->350] *)
ini3=makeMatrixByNakedSingle[ini2];
xylist=First[#]&/@rules; (* 追加された数字の位置のリスト *)
Show[Rasterize[plotGameSeq[ini3, xylist]], ImageSize -> 250]
Step3: in3 -> ini4
行列 ini3 を入力として findNakedSingle を使って答えを探す。見つかった答えを書き込んで行列 ini4 を作る。
(* begin{Subsection}: Step3:ini3 -> ini4 *)
mapini3=makeMap[ini3];
findNakedSingle[mapini3]
⇒ {{1,{3,8}},{1,{4,7}},{4,{5,9}}}
(* Show[Rasterize[plotMapGridsColoredByNakedSingle[ini3]],ImageSize->350] *)
ini4=makeMatrixByNakedSingle[ini3];
xylist=First[#]&/@rules; (* 追加された数字の位置のリスト *)
Show[Rasterize[plotGameSeq[ini4, xylist]], ImageSize -> 250]
Step4: in4 ➞ No NakedSingles
行列 ini4 を入力として findNakedSingle で探した結果、答えが見つからない。
これを解決する方法として「Hidden Single (隠れたシングル) を探す方法」を次回に説明します。
(* begin{Subsection}: Step4:ini4 No NakedSingles *)
mapini4=makeMap[ini4];
findNakedSingle[mapini4]
⇒ {}
Show[Rasterize[plotMapGridsColoredByNakedSingle[ini4]],ImageSize->350]
(* end{Subsection}: Step4:ini4 No NakedSingle *)
(* end{Section} *)
これを解決する方法として「Hidden Single (隠れたシングル) を探す方法」を次回に説明します。