ナンプレにおける同じ構造の盤面の代表解についての試行錯誤
ナンプレにおける同じ構造の盤面の代表解についての試行錯誤
code:5区と6区
行区の構成数字が3つ同じ
{1 2 3} | {7 8 9} {1 2 3} | {4 5 6}
{4 5 6} | {1 2 3} {4 5 6} | {7 8 9}
{7 8 9} | {4 5 6} {7 8 9} | {1 2 3}
行区の構成数字が2つ同じ
{1 2 3} | {7 8 6} {1 2 3} | {4 5 9}
{4 5 6} | {1 2 9} {4 5 6} | {7 8 3}
{7 8 9} | {4 5 3} {7 8 9} | {1 2 6}
行区の構成数字が3つ同じものと2つ同じものは共存させられない
{1 2 3} | {4 5 6}3 {1 2 3} | {7 8 3}x
{4 5 6} | {1 2 9}2 {4 5 6} | {1 2 9}2
{7 8 9} | {7 8 3}x {7 8 9} | {4 5 6}3
code:4区の行区の構成数字は自動で決まる
6区の行区の構成数字が5区の行区と同じ → 4区の行区の構成数字も5,6区と同じ
{4 5 6} | {1 2 3} | {7 8 9} {7 8 9} | {1 2 3} | {4 5 6}
{7 8 9} | {4 5 6} | {1 2 3} {1 2 3} | {4 5 6} | {7 8 9}
{1 2 3} | {7 8 9} | {4 5 6} {4 5 6} | {7 8 9} | {1 2 3}
6区の行区の構成数字が5区の行区と1つ異なる → 4区の行区の構成数字も5,6区の行区と1つ異なる
{4 5 9} | {1 2 3} | {7 8 6} {7 8 6} | {1 2 3} | {4 5 9}
{7 8 3} | {4 5 6} | {1 2 9} {1 2 9} | {4 5 6} | {7 8 3}
{1 2 6} | {7 8 9} | {4 5 3} {4 5 3} | {7 8 9} | {1 2 6}
code:この構造に帰着できる
{4 5 *} | {1 2 3} | {7 8 *}
{7 8 *} | {4 5 6} | {1 2 *}
{1 2 *} | {7 8 9} | {4 5 *}
数字が異なる場合は数字を入れ替えることで対処できる。
標準化方法
4, 5, 6 区の行区同士で共通する2つの数字を {1, 2}, {4, 5}, {7, 8} とする。
5区の {1, 2} と同じ行区に含まれる数を 3 とする。
5区の {4, 5} と同じ行区に含まれる数を 6 とする。
5区の {7, 8} と同じ行区に含まれる数を 9 とする。
列に対しても同様の議論ができる。
code:行を無視すればこの構造に帰着できる
|{2 {3 {1 |
| 5 6 4 |
| *} *} *}|
+---------+
|{1 {2 {3 |
| 4 5 6 |
| 7} 8} 9}|
+---------+
|{3 {1 {2 |
| 6 4 5 |
| *} *} *}|
行と列の両方を考慮すると、行区で共通する2つの数字と列区で共通する2つの数字の組み合わせによって幾つかの場合に分かれる。
code:1
. . . |{2 {3 {1 | . . .
. . . | 5 6 4 | . . .
. . . | *} *} *}| . . .
----------+---------+----------
{4 5 *} | 1 2 3 | {7 8 *}
{7 8 *} | 4 5 6 | {1 2 *}
{1 2 *} | 7 8 9 | {4 5 *}
----------+---------+----------
. . . |{3 {1 {2 | . . .
. . . | 6 4 5 | . . .
. . . | *} *} *}| . . .
2,8区は7,8,9に自由度がある
4,6区は3,6,9に自由度がある
code:1
. . . |{2 {3 {1 | . . .
. . . | 8 5 4 | . . .
. . . | *} *} *}| . . .
----------+---------+----------
{4 5 *} | 1 2 3 | {7 8 *}
{7 8 *} | 4 6 5 | {1 2 *}
{1 2 *} | 7 8 9 | {4 5 *}
----------+---------+----------
. . . |{3 {1 {2 | . . .
. . . | 5 4 8 | . . .
. . . | *} *} *}| . . .
2,8区は7,6,9に自由度がある
4,6区は3,6,9に自由度がある
code:1
. . . |{2 {1 {7 | . . .
. . . | 8 5 4 | . . .
. . . | *} *} *}| . . .
----------+---------+----------
{4 5 *} | 3 2 1 | {7 8 *}
{7 8 *} | 4 6 5 | {1 2 *}
{1 2 *} | 7 8 9 | {4 5 *}
----------+---------+----------
. . . |{1 {7 {2 | . . .
. . . | 5 4 8 | . . .
. . . | *} *} *}| . . .
2,8区は3,6,9に自由度がある
4,6区は3,6,9に自由度がある
特定の数字の位置を固定したい
code:1
. . . | . . . | . . 5
. . . | 5 . . | . . .
. . 5 | . . . | . . .
----------+---------+----------
. 5 . | 1 2 3 | . . .
. . . | 4 5 6 | . . .
. . . | 7 8 9 | . 5 .
----------+---------+----------
. . . | . . . | 5 . .
. . . | . . 5 | . . .
5 . . | . . . | . . .
数字の設定
2区8区の列区は
{1, 4, 7} のうち2つ以上を持つ
{2, 5, 8} のうち2つ以上を持つ
{3, 6, 9} のうち2つ以上を持つ
ように設定する。
4区6区の列区は
{1, 2, 3} のうち2つ以上を持つ
{4, 5, 6} のうち2つ以上を持つ
{7, 8, 9} のうち2つ以上を持つ
ように設定する。
と思ったができない場合がある
こうすると同じ構造の盤面の中でもかなり限定される。
と思ったがまだまだ多い
同じ盤面から何通りか作れる
code:1
3 4 2 | 6 7 1 | 9 8 5
8 9 1 | 5 3 2 | 6 4 7
7 6 5 | 9 4 8 | 3 2 1
--------+---------+--------
4 5 7 | 1 2 3 | 8 6 9
9 2 8 | 4 5 6 | 7 1 3
1 3 6 | 7 8 9 | 2 5 4
--------+---------+--------
6 1 4 | 8 9 7 | 5 3 2
2 8 9 | 3 1 5 | 4 7 6
5 7 3 | 2 6 4 | 1 9 8
code:2
4 1 3 | 8 6 7 | 9 2 5
9 7 2 | 5 3 1 | 6 8 4
8 6 5 | 9 4 2 | 3 7 1
--------+---------+--------
6 5 7 | 1 2 3 | 4 9 8
2 9 8 | 4 5 6 | 1 3 7
3 4 1 | 7 8 9 | 2 5 6
--------+---------+--------
7 8 6 | 2 9 4 | 5 1 3
1 3 9 | 6 7 5 | 8 4 2
5 2 4 | 3 1 8 | 7 6 9
数字を意識せずに、構造を使えないだろうか
https://gyazo.com/33742cf3498722f4681ccbfe89179529
オレンジ:行区の中で1つだけ異なっている記号
水色: 列区の中で1つだけ異なっている記号
多分これは問題の作り方
https://gyazo.com/bd57b94277849c640f0c51d5d0ba1ef4