三国同盟を実装する
今回はナンプレ解法の続きです。前回まで6つの解法を実装し新聞や週刊誌に掲載されたナンプレ課題を解くことに成功しました。それでは三国同盟解法を実際に実装する例をまとめます。
下、左の課題は前回のAI自動解法システムでは正答に至りませんでした。その右図には初回の候補数を表しています。3X3の4ブロック目で178による三国同盟が起きています。
ナンプレを解くには多くの解法を織り込んで総合力で候補数を1つに絞り確定していきます。AI自動解法で解けない課題が見つかったとき、課題に誤りがなければ自動解法が不十分だからです。どの部分が不足しているかを見極め対策を講じなければなりません。
➡
実装のあらまし
『三国同盟』という解法は、「3つのマスに限定された3つの候補がある時、同一行の他の6マスにあるその候補は削除できる」という決まりです。
下図では行でなくブロックですが具体例で説明します。
178が①⑤⑥の3マスに限定され三国同盟が成立しているので他の6マスに混在している178を削除できます。削除により⑦マスは候補が1つになり4が確定し、⑧マスから4を削除できます。よってこのグループ単独で右図のように暫定決定します。
➡
これからグループ(9マス)の三国同盟成立を判別する具体的な方法を箇条書きに列記します。
- グループの中で確定マスは除外する
- 内包数2~3のマスを選ぶ
- 選択されたマス数>=3が条件
- 上条件成立も未確定マスが3ならば対象外
- 最後に選択マス数が3以上でも参照回数が2未満の数が含まれていれば除外
- 選択されたマスの数字を123…に変換し普遍化する※変換方法は下記
- 普遍化された比較テーブルを検索して三国同盟成立を判別する
※マスの数字を123…に変換する方法
三国同盟は3つの数字を扱います。数字は1~9あってもすべて1,2,3に置き換えて動静を把握します。ここではこのことを普遍化と呼びます。三国同盟を成立させるためには最低でも二国からスタートすることに着目し数字の出現回数を調べ123…に変換して普遍化された比較テーブルを参照します
三国同盟は3つの数字を扱います。数字は1~9あってもすべて1,2,3に置き換えて動静を把握します。ここではこのことを普遍化と呼びます。三国同盟を成立させるためには最低でも二国からスタートすることに着目し数字の出現回数を調べ123…に変換して普遍化された比較テーブルを参照します
三国同盟成立条件を判別する普遍化された比較テーブル
(基本は左側の4パターン、処理を簡略化するため増加)
(基本は左側の4パターン、処理を簡略化するため増加)
① | 123, 123, 123 | |||
② | 123, 123, 12 | 123, 123, 13 | 123, 123, 23 | 2セル追加 |
③ | 123, 12, 13 | 123, 12, 23 | 123, 13, 23 | 2セル追加 |
④ | 12, 13, 23 |
上図の三国同盟の例では背景色が黄色のセルにより同盟成立が確認されました
改訂されたAI自動解法による実行例
以下、準備中