ナンプレ(数独)無料ゲーム

スポンサーリンク

TOP > テクニック > グループXサイクル

ナンプレ(数独)のテクニック26

グループXサイクル
X-サイクルは1つの数字1つのセルでチェーンをつないで行くのですが、いくつかの数字をグループにして考えるバージョンです。

F
12 
   
   
F
12 
 5 
   
4938
E
12 
 5 
7  
6 2 
   
7  

上の場合はXサイクルだと弱リンクとなりますが
左の2つを1つの数字と考えるとグループXサイクルでは強リンクになります。

C
12 
45 
7 9
C
12 
 5 
7  
 2 
4  
7  
D
1  
4  
7 9
3 6
 2 
45 
7 9
 2 
 5 
7  
8

上の場合は上段2つと中段1つが強リンクとして考えます。
また左列2つと中央の列1つも強リンクです。

グループにする数字があると候補が増える分X-サイクルよりもたくさんの可能性が広がります。
具体的にはX-サイクル同様 強リンク->弱リンク->強リンク->弱リンクとつないでいき最初のセルに戻るチェーンを探します。
最後だけは弱リンクでも構いません。そうすることによって、
[]=強=>[1]=弱=>[,]=強=>[1]=弱=>[]=強=>[1,1]=弱=>[](OFFスタート)
[1]=強=>[]=弱=>[?,?]=強=>[?]=弱=>[?]=強=>[,]=弱=>[1](ONスタート)
の2パターンが考えられいずれの場合も[1]を削除できるセルを探します。
最後のセル=最初のセルなのでONスタートの場合逆回りも考えます。最後のセルのとなりはOFFとなります。

例:下図は[1]のグループXサイクルです。Xサイクル同様スタートに[1]が入らない場合チェーンがつながり1周します。
[R1C3]=強=>[R7C3]=弱=>[R7C7,R7C8]=強=>[R8C7]=弱=>[R3C7]=強=>[R3C1,R3C2]=弱=>[R1C3]で
スタートがOFFの時のONになるチェーン:[R7C3][R8C7][R3C1,R3C2]と
スタートONの時[R1C3]のどちらの場合も共通で削除できるセルが発生します。

グループXサイクル

ABC...はチェーンの順番です。

いずれの場合も[R1C1][R1C2]には[1]は入れません

12 
   
 8 
123
  6
 8 
1  
  6
   
12 
   
7  
512 
   
7  
 23
   
 8 
49
7 23
 5 
 8 
912 
   
   
64123
 5 
 8 
12 
 5 
   
 23
   
   
12 
   
   
12 
 5 
   
493812 
 5 
7  
6 2 
   
7  
697  3
4  
   
25  3
4  
   
81
312 
4  
   
81  
4 6
7  
   
4  
7  
1  
   
7  
 2 
4 6
7  
95
12 
4  
   
12 
4  
   
51 3
4 6
78 
   
4  
789
1 3
   
7 9
 23
4 6
7  
 2 
   
7  
 23
4  
7  
1  
4  
 89
   
4 6
78 
1  
  6
   
 23
 5 
   
   
4  
789
 23
   
   
12 
45 
7 9
12 
 5 
7  
 2 
4  
7  
51  
4  
78 
2   
4  
78 
   
4  
789
   
   
7 9
1  
4  
7 9
36
   
4  
  9
   
4  
7  
3 2 
 5 
   
16 2 
45 
7 9
 2 
 5 
7  
8

ルール2
Xサイクル・グループXサイクルどちらも最後は弱リンクでいいのですがもし強リンクでしかもチェーンの数が奇数の場合ルール2が成立します。
[]=強=>[1]=弱=>[,]=強=>[1]=弱=>[]=強=>[1,1]=弱=>[]=強=>[1](OFFスタート)
最後のセル=最初のセルなので最初OFFでスタートしているにもかかわらず最後がONになってしまいます。
矛盾するので最初がOFFということにはならずに最初のセルは[ON]で確定します。

ルール3
Xサイクル・グループXサイクルどちらも最後は弱リンクでいいので、[弱]=>[弱]となる場合がでてきます。上と同様チェーンの数が奇数の場合で最後が[弱]=>[弱]の場合ルール3が成立します。
[]=強=>[1]=弱=>[,]=強=>[1]=弱=>[]=強=>[1,1]=弱=>[]=弱=>[?](OFFスタート)
[1]=強=>[]=弱=>[?,?]=強=>[?]=弱=>[?]=強=>[?,?]=弱=>[]=弱=>[1](ONスタート)
最後のセル=最初のセルなのでONスタートの場合逆回りも考えます。最後のセルのとなりはOFFとなります。
OFFスタートでもONスタートでも[弱]=>[弱]で挟まれた最後のセルの1つまえは必ず[OFF]になります。

成立条件
  • 強リンクを探し強リンクの多い数字をあたってみる
  • 強リンク・弱リンク・強リンク・弱リンクとなるよう順番にチェーンを繋いで行く
  • 1行・1列にならんでいる場合はその方向のグループとして考える
  • 2つのチェーンに共通して消せる候補を消す
  • チェーンの数が奇数なら最後が強リンクの場合最初のセルは[OFF]となる(ルール2)
  • チェーンの数が奇数なら最後が弱リンクの場合最最後のセルの1つ前は[OFF]となる(ルール3)

TINY24さんからのアドバイスをいただきプログラムを作ったのですが、実装するのにとんでもなく時間がかかりました。チェーンは作れてもsudokuwikiの回答を再現しなかったり修正すると前に動いていたのが解けなくなったりです。
プログラム的に難しかったのですが、グループをある方向から見る場合1つのセルのように考えるというアドバイスで考えをまとめることができました。
ただX-サイクルのルール2・ルール3を見落としていてので結局X-サイクルに戻っての修正となりました。ついでにWXYZのバグも出てきて苦労しただけに思い入れも強くなりました。
まずは強リンク・弱リンクの数を数えて強リンク・弱リンクが多いものから当たっていきます。チェーンの長さは10未満にしました。
さらにチェーンの長さを考慮に入れつつ優先するチェーンを探しています。ルール3は後回しで検索するようになっています。
それでもsudokuwikiの最後の例題はほかのチェーンを先に見つけてしまい解けませんでした。このチェーンを見つけるよう調整するとこんどは他の例題がおかしくなりました。

グループXサイクルのルール2で[8]が:[R4C1]=強=>[R3C1]=弱=>[R1C2]=強=>[R1C8]=弱=>[R2C7]=強=>[R5C7]=強=>[R4C8]=強=>[R4C1]で成立
チェーンの数が奇数で最後が強リンクのためスタートがOFFの時一周するとスタートがONになり矛盾します
そのためスタートセルは[8]で確定します。

グループXサイクル

9
C
   
45 
 8 
C
   
 5 
 8 
3716
D
   
45 
 8 
2
12 
 5 
   
1  
45 
 8 
76 2 
45 
 8 
   
45 
 8 
E
1  
 5 
 8 
39
B
12 
 5 
 8 
63   
45 
   
 2 
 5 
 89
   
 5 
 89
71  
 5 
 8 
1  
45 
   
A
1  
 5 
 8 
3471  
 5 
  9
62
G
   
   
 89
1  
 5 
   
71  
 5 
 8 
21  
45 
   
3   
 5 
  9
F
   
   
 89
61  
45 
   
1  
 5 
   
9681  
4  
   
231  
45 
   
7
4   
 5 
 8 
1  
 5 
 8 
2671  
 5 
  9
1  
 5 
  9
3
6291  
 5 
   
1  
 5 
   
3478
371  
 5 
   
9   
4  
 8 
   
4  
 8 
1  
 5 
   
26

ABC...はチェーンの順番です。

9   
45 
 8 
   
 5 
 8 
3716   
45 
 8 
2
12 
 5 
   
1  
45 
 8 
76 2 
45 
 8 
   
45 
 8 
1  
 5 
 8 
39
12 
 5 
 8 
63   
45 
   
 2 
 5 
 89
   
 5 
 89
71  
 5 
 8 
1  
45 
   
83471  
 5 
  9
62   
   
 89
1  
 5 
   
71  
 5 
 8 
21  
45 
   
3   
 5 
  9
   
   
 89
61  
45 
   
1  
 5 
   
9681  
4  
   
231  
45 
   
7
4   
 5 
 8 
1  
 5 
 8 
2671  
 5 
  9
1  
 5 
  9
3
6291  
 5 
   
1  
 5 
   
3478
371  
 5 
   
9   
4  
 8 
   
4  
 8 
1  
 5 
   
26

グループXサイクルのルール3で[5]が:[R1C4,R1C5]=強=>[R1C2]=強=>[R7C2]=強=>[R7C6]=弱=>[R3C6]=弱=>[R1C4,R1C5]で成立 チェーンの数が奇数で最後と最後から2つめが弱リンクのためスタートがOFFでもONでも[R2C5]に[5]を入れることはできません。

グループXサイクル

1  
  6
  9
B
1  
45 
   
7
A
12 
 56
   
A
12 
 5 
   
812 
4  
  9
123
4  
  9
1 3
4 6
   
81  
4  
   
12 
  6
   
937512 
4  
   
1  
4 6
   
1  
 56
  9
312 
 56
  9
12 
 56
   
4
E
12 
 5 
   
12 
   
  9
87
491  
  6
   
712 
   
   
312 
  6
   
58
1  
 5 
7  
8312 
 5 
   
9612 
4  
7  
12 
4  
7  
1  
4  
   
   
 56
7  
21  
 56
   
81  
 5 
   
431  
  6
7  
9
3
C
1  
 5 
7  
84   
  6
7  
D
1  
 5 
   
1  
  6
  9
1  
  6
  9
2
1  
   
  9
61  
45 
  9
12 
 5 
   
812 
 5 
   
1  
4  
7  
1 3
4  
7  
1 3
4  
   
21  
   
7  
1  
4  
   
3   
  6
7  
981  
4 6
   
5

ABC...はチェーンの順番です。

1  
  6
  9
1  
45 
   
712 
 56
   
12 
 5 
   
812 
4  
  9
123
4  
  9
1 3
4 6
   
81  
4  
   
12 
  6
   
937512 
4  
   
1  
4 6
   
1  
 56
  9
312 
 56
  9
12 
 56
   
412 
 5 
   
12 
   
  9
87
491  
  6
   
712 
   
   
312 
  6
   
58
1  
 5 
7  
8312 
 5 
   
9612 
4  
7  
12 
4  
7  
1  
4  
   
   
 56
7  
21  
 56
   
81  
 5 
   
431  
  6
7  
9
31  
 5 
7  
84   
  6
7  
1  
 5 
   
1  
  6
  9
1  
  6
  9
2
1  
   
  9
61  
45 
  9
12 
 5 
   
812 
 5 
   
1  
4  
7  
1 3
4  
7  
1 3
4  
   
21  
   
7  
1  
4  
   
3   
  6
7  
981  
4 6
   
5

ナンプレ(数独)のマスの名前

R1C1R1C2R1C3R1C4R1C5R1C6R1C7R1C8R1C9
R2C1R2C2R2C3R2C4R2C5R2C6R2C7R2C8R2C9
R3C1R3C2R3C3R3C4R3C5R3C6R3C7R3C8R3C9
R4C1R4C2R4C3R4C4R4C5R4C6R4C7R4C8R4C9
R5C1R5C2R5C3R5C4R5C5R5C6R5C7R5C8R5C9
R6C1R6C2R6C3R6C4R6C5R6C6R6C7R6C8R6C9
R7C1R7C2R7C3R7C4R7C5R7C6R7C7R7C8R7C9
R8C1R8C2R8C3R8C4R8C5R8C6R8C7R8C8R8C9
R9C1R9C2R9C3R9C4R9C5R9C6R9C7R9C8R9C9

Rは行(Y軸)、Cは列(X軸)となっています。(Row、Column)

ナンプレ京(数独)
TOP
閉じる
閉じる