プリズム

数理的アプローチ


Number Place(ナンプレ)ー一意の解と複数の解ー

投稿日時:

最終更新日時:

カテゴリー:

前回、NumberPlaceFXを利用して、ナンプレパズルを解く方法を、具体例を通じて、説明した。今回も、具体例を通じて、Memo: Select One of Themウィンドウの利用法を説明する。

前回説明した方法0(Single Possible)から方法4(Among 3 MiniGrids)までを利用してパズルが解けた場合、その答えが一意の解である。今回の例は、方法0(Single Possible)から方法4(Among 3 MiniGrids)までを利用しても解けないが、一意の解を持つ例(VeryDifficultExample)、複数の解を持つ例(ExtremelyDifficultExample)、の2つの例である。これらを解く際、利用するのがMemo: Select One of Themウィンドウである。最初の例は「Level」メニューで「Very Difficult」をチェックし、「File>New」メニューで作成したものである。2つ目の例は「Level」メニューで「Extremely Difficult」をチェックし、「File>New」メニューで作成したものである。ただし、「Level>Detail…」メニューで表示される「Detail of Level」ダイアログボックスで「Extremely Difficult」を60 <= total score <= 70に変更した。

方法0(Single Possible)から方法4(Among 3 MiniGrids)までで解けないので、ある時点でSingle Possibleなセルがなく、どのセルのPossibleも2個以上の数字を含んでいて、これ以上狭めることが出来ない(この状態をNo Single Possibleと呼ぶことにする)。この時に試みる方法は、Possibleの数字の個数が少ないセルと数字を1個を選び、仮に、そのセルにその数字を入れて、解き進めることである。解が見つかれば、その仮に入れたことが成功であった。解が見つからなかったら、元に戻り、そのセルに違う数字を入れて、同様のことを行う。解が見つかるか否かが分かる前に、No Single Possibleな状態に陥れば、その時点で、また、Possibleの数字の個数が少ないセルと数字を1個を選び、仮に、そのセルにその数字を入れて、解き進める。解が見つかった場合、複数の解を求める必要がなければ、終了し、複数の解を求める必要があれば、他の可能な場合を調べる。これを容易に行なえるようにしたのが、Memo: Select One of Themウィンドウである。以下、具体例に即して、このウィンドウの利用方法を説明する。

また、全ての解を表示する機能も例示する。

VeryDifficultExample

VeryDifficultExample0Rev
図 VeryDifficultExample

今回の目的は、Memo: Select One of Themウィンドウの利用方法の説明なので、(必要ならば)「Step by step」チェックボックスのチェックを外し、「Solve Puzzle」ボタンを押し、NumberPlaceFXに自動で解かせる。(ただし、必要ならば「Method」メニューの「5: Select One of Them」のチェックは外しておく。)(通常は、自分で解き進め、方法0(Single Possible)から方法4(Among 3 MiniGrids)が適用できなくなった時点(厳密でなくてよい)でMemo: Select One of Themウィンドウを利用すればよい。)

解法が途中で止まり、Activitiesの「Cannot solve the Puzzle uniquely up to “4 Among 3 MiniGrids” method」により、No Single Possibleな状態に陥ったことが分かる。「Show Memo」ドグルボタンを押し下げ、Memo: Your Possiblesウィンドウを表示し、「Synchronize」ボタンを押しNumberPlaceFXが内部で保持しているセルのPossiblesをこのウィンドウにコピーする。Posssibleの数字の個数が少ないセルを探す、(1,2)セルのPossibleが34で2個の数字からなることに着目する。

図 方法0から方法4までで解けなくなった
図 Memo: Your Possiblesウィンドウ

「Show Select One of Them」ドグルボタンを押し下げて、Memo: Select One of Themウィンドウを表示する。「+」ボタンを押す。この結果、その時点のセルと(NumberPlaceFXが保持しているものとMemo: Your Possiblesの両方の)Possiblesが保存され(この保存されたデータは「Restore」ボタンを押すことにより、復元される)、どのセルにどの数字を仮に入れるか、現時点での成功、失敗を表示する部分が表示される。この時点ではどのセルなどが不明なので、「Select ? of ??? at (?,?)」と「?」が表示される。

VeryDifficultExampleMemoSelectOne0Rev
図 Memo: Select One of Themウィンドウ
図 Memo: Select One of Themウィンドウ、レベル1

Mainウィンドウに戻り、先程着目した(1,2)セルを選び、そのPossible 34の中からどちらか一方
、ここでは、3を選ぶ。Memo: Select One of Themウィンドウでは「Select 3 of 34 at (1,2)」と表示され、「Restore」と「+」ボタンが利用可能になる。

図 Mainウィンドウ、3 at (1,2)
図 Memo: Select One of Themウィンドウ、(1,2)セルに数字3を入力した結果

Mainウィンドウに戻り、解法を進めるために、「Solve Puzzle」ボタンを押す。Activitiesに「No Possibles! Inconsistent move(s)!」と表示され、解法が間違っていたことが分かる。すなわち、(1,2)セルに3を入れたのが間違いであった。Memo: Your Possiblesウィンドウを見ると、空白である(5,4)セルのPossibleがない、または、(6,5)セルと(6,9)セルのPossibleが共に3である、から解法が間違っていることが分かる。(通常は、「Solve Puzzle」ボタンを押さずに、自分で解くので、このMemo: Your Possiblesウィンドウから解法が間違っていることを判断する。)

図 Mainウィンドウ、解法が間違っていた
図 Memo: Your Poossiblesウィンドウ、解法が間違っていた

Memo: Select One of Themウィンドウに戻り、「Restore」ボタンを押すと、(保存されていたセルとPossibleの内容が復元され、)仮に3を入れたことにより、解法が間違っていたことを意味する「Failed: 3」が表示され、次の候補を待っていることを意味する「Select ? of 34 at (1,2)」が表示される。Mainウィンドウに戻り、他の候補である数字4を(1,2)セルに入力する。

図 Memo: Select One of Themウィンドウ、(1,2)セルの3がFailedになった
図 Mainウィンドウ、4 at (1,2)

Memo: Select One of Themウィンドウに「Select 4 of 34 at (1,2)」と表示される(「+」ボタンは後で押す)。Mainウィンドウに戻り、「Solve Puzzle」ボタンを押すと、Activitiesに「Cannot solve the Puzzle uniquely up to “4: Among 3 MiniGrids” method」と表示され、また、No Single Possibleな状態に陥った。

図 Memo: Select One of Them、(1,2)セルに他の候補である数字4を入力
図 Mainウィンドウ、また、No Single Possibleな状態に陥った

Memo: Your Possiblesウィンドウを見ると、方法0から方法4までを利用して、これ以上どのセルのPossibleも狭めることが出来ない状態になっている。(「Solve Puzzle」ボタンを押さず、自分でMemo: Your Possiblesウィンドウを利用して解く場合、厳密でなくても、これ以上どのセルのPossibleも狭めることが出来ないと判断した時点でよい。)(1,5)セルのPossibleが27からなり、数字の個数が2個であることに着目する。Memo: Select One of Themウィンドウに戻り、「+」ボタンを押し、(この時点でのセルとPossibleの内容を保存し、)レベル2に入る。

図 Memo: Your Possiblesウィンドウ、(1,5)セルのPossibleの数字の個数が2個である
図 Memo: Select One of Themウィンドウ、レベル2

Mainウィンドウに戻り、先程、着目した(1,5)セルにPossible 27の一方、ここでは、2を入れる。Memo: Select One of Themウィンドウに「Select 2 of 27 at (1,5)」と表示される(「Restore」ボタンは後で押す)。

左図 Mainウィンドウ、2 at (1,5)
図 Memo: Select One of Themウィンドウ、(1,5)セルに数字2を入力した結果

Mainウィンドウに戻り、「Solve Puzzle」ボタンを押すと、解法が間違っていたことが分かる。Memo: Your Possiblesウィンドウでも、空白である(1,9)セルのPossibleがない、または、(4,7)セルと(4,8)セルのPossibleが共に6である、ことにより、解法が間違っていたことが確認できる(自分で解く場合は、 こちらの確認を行うこと)。

図 Mainウィンドウ、解法が間違っていた
図 Memo: Your Poossiblesウィンドウ、解法が間違っていた

Memo: Select One of Themウィンドウに戻り、「Restore」ボタンを押すと、(1,5)セルに数字2を入れたのが間違いであったことを意味する、「Failed: 2」が表示される。Mainウィンドウに戻り、(1,5)セルに、残りの候補である7を入力する。

図 Memo: Select One of Themウィンドウ、レベル2、「Failed: 2」
図 Mainウィンドウ、7 at (1,5)

Memo: Select One of Themウィンドウのレベル2に「Select 7 of 27 at (1,5)」と表示される(「Restore」ボタンは後で押す)。Mainウィンドウに戻り、「Solve Puzzle」ボタンを押すと、解が求まった。(この時点で、「File>Save As…」メニューを選択し、適切なファイル名でこの解を保存するのが望ましい。)

図 Memo: Select One of Themウィンドウ、レベル2、Select 7 of 27 at (1,5)
図 Mainウィンドウ、解が求まった

Memo: Select One of Themウィンドウに戻り、「Restore」ボタンを押すと、(1,5)セルに7を入れたら解が求まったことを意味する「Solved: 7」と表示される。また、「1 solution」は、今までに、1個の解が求まったことを示す。レベル2の結果をレベル1に反映させるために、「X」ボタンを押すと、(1,2)セルに4を入れて解が求まったことを意味する、「Solved: 4」と表示される。

図 Memo: Select One of Themウィンドウ、レベル2、「Solved: 7」
図 Memo: Select One of Themウィンドウ、レベル1、「Solved: 4」

以上で、全ての可能性を尽くしたので、このVeryDifficultExampleは一意の解を持つことが分かる。

ExtremelyDifficultExample

図 ExtremelyDifficultExample

VeryDifficultExampleと同様に解く。ただし、要点だけを示す。Mainウィンドウで「Solve Puzzle」ボタンを押すと、No Single Possibleな状態に陥った。その時点でのMemo: Your Possiblesウィンドウで、6個のセルだけがまだ空白(すなわち、Possibleが表示されている)で、どれもPossibleの数字の個数が2個である。

図 Mainウィンドウ、No Single Possibleな状態に陥った
図 Memo: Your Possiblesウィンドウ

(2,3)セルのPossible 25に対して、2、次に、5の順に、解かどうかチェックする。以下、成功したか否かが分かり、「Restore」ボタンを押した直後のMemo: Select One of Themウィンドウのみを記す。

図 Memo: Select One of Themウィンドウ、「Solved: 2」
図 Memo: Select One of Themウィンドウ、「Solved: 25」

以上で、全ての可能性を尽くしたので、このExtremelyDifficultExampleは2個の(複数の)解を持つことが分かる。

全ての解を表示する

ExtremelyDifficultExampleを利用して、全ての解を表示する機能を例示する。

解く前のExtremelyDifficultExampleが表示されているMainウィンドウで「File>Show All Solutions」メニューを選ぶと、別ウィンドウに、全ての解とその個数が表示される。

図 「File>Show All Solutions」メニュー
図 全ての解と「There are 2 Solutions」が表示された