0

【ナンプレ】BoxLineとPointingPairは同じ

42
0

ナンプレのルール
・9×9のマスに1~9の数字を入れる
・3×3のブロックで区切られている
・行、列、ブロック内で同じ数字が入ってはいけない
・解は一つ

タイトルにもある「BoxLine」「PointingPair」とは、ナンプレの解き方の一つです。

関連リンク
【ナンプレ】Naked(N国同盟)とHidden(隠れN国同盟)は同じ

BoxLineとは

123456789
A634,8,92
B5731,2,8,91,2,8,91,2,8,98,964
C574,8,9
D1

例えば、上の盤面を見てください。

同じ行、同じ列、同じブロックの数字は入らないので、B7には8,9のどちらかが入ります。

そして、B4,B5,B6のいずれかに1,2が入ります。

すると、同じブロックであるA6,C6に1,2は入らなくなります。

これがBoxLineです。

PointingPairとは

123456789
A632
B57364
C(2)(2)(2)571,4,8,9

例えば、上の盤面を見てください。

A8に2が埋まっています。

すると、同じ行であるA1,A2,A3に2は入らず、C1,C2,C3のいずれかに2が入ることがわかります。

そして、C行ではC1,C2,C3以外には2が入らず、C6に2は入らなくなります。

これがPointingPairです。

123456789
A63821
B57364
C(1,2,8)(1,2,8)(1,2,8)4,5,7,94,5,7,94,5,7,9

上記のように3つの数字に対して適用できる場合もあります。

123456789
A(1)(1)(1)634,8,92(1)
B5731,2,8,91,2,8,91,2,8,98,964
C(12)(12)(12)574,8,9(1)(1)
D1

上記の1のように、2つの行(列)に対して適用できる場合もあります。

もしA6に1が入った場合、A1,A2,A3,A9に1が入ることができず、C行に1が2つ存在することになり矛盾します。

よって、A6に1は入りません。

C6についても同様です。

BoxLineとPointingPairの同値性 概要

123456789
A634,8,92
B5731,2,8,91,2,8,91,2,8,98,964
C574,8,9
D1

上記はB4,B5,B6のBoxLineで捉えてもよいですし、

C1,C2,C3のいずれかが2であるPointingPairと
A行ではA1,A2,A3,A9のいずれか、C行ではC1,C2,C3,C8,C9のいずれかが1であるPointingPairの組み合わせとして捉えてもよいです。

BoxLineとPointingPairの同値性 証明

共通 断りがなければ以下の定義とする

U={1,2,...,9}
C(1,1),...,C(9,9)U,|C(1,1)|=...=|C(9,9)|=1
stC(n,s)C(n,t),C(t,n)C(t,n) (())
B=n=13m=13C(in,jm)
C(in,jm),C(is,jt)B, (n,m)(s,t)C(in,jm)C(is,jt) ()
x1,...,x9{1,2,...,9},stxsxt

BoxLine

ある数が縦(横)3マスのいずれかに含まれ、そのブロック外の同じ列(行)にはその数が含まれないブロックが存在する

BC(i1,j1),C(i1,j2),C(i1,j3) s.t. x1C(i1,j1)C(i1,j2)C(i1,j3),x1l=49C(i1,jl)

BC(i1,j1),C(i2,j1),C(i3,j1) s.t. x1C(i1,j1)C(i2,j1)C(i3,j1),x1k=49C(ik,j1)
(stisit,jsjt)

例えば、1C(2,2)C(2,3)C(2,1), 1l=49C(2,jl)
は、ブロックB内の同じ行に1が入り、ブロックB外の同行には1が入らないBoxLineである。

PointingPair

あるボックス内で、ある数が縦(横)3マスに含まれないとき、その列(行)と同じ列(行)3マスにその数が含まれないボックスが存在する

C(i1,j1),C(i1,j2),C(i2,j1),C(i1,j3),C(i3,j1)B
x1C(i1,j1)C(i1,j2)C(i1,j3) 
B1C(i1,j4),C(i1,j5),C(i1,j6) s.t. x1C(i1,j4)C(i1,j5)C(i1,j6)
または
x1C(i1,j1)C(i2,j1)C(i3,j1) 
B2C(i4,j1),C(i5,j1),C(i6,j1) s.t. x1C(i4,j1)C(i5,j1)C(i6,j1)

(stisit,jsjt,kskt,lslt)

例えば、5C(1,2)C(1,3)C(1,1)というブロックB
5C(1,4)C(1,5)C(1,6)というブロックB1があればPointingPairである。

方針
BoxLineが成立している時は、他のブロックでPointingPairが成立し、PointingPairが成立している時は、他のブロックでBoxLineが成立していることを示す。

BoxLinePointingPair
BC(i1,j1),C(i1,j2),C(i1,j3) s.t. x1C(i1,j1)C(i1,j2)C(i1,j3),x1l=49C(i1,jl)
C(i1,j4),C(i1,j5),C(i1,j6)B1, C(i1,j7),C(i1,j8),C(i1,j9)B2 とすると
C(i1,j4),C(i1,j5),C(i1,j6)B1 
x1C(i1,j4),C(i1,j5),C(i1,j6) 
B2C(i1,j7),C(i1,j8),C(i1,j9) s.t. x1C(i1,j7)C(i1,j8)C(i1,j9)

これはPointingPairの定義である

列の場合も同様

PointingPairBoxLine

C(i1,j1),C(i1,j2),C(i1,j3)B
x1C(i1,j1)C(i1,j2)C(i1,j3) 
B1C(i1,j4),C(i1,j5),C(i1,j6) s.t. x1C(i1,j4)C(i1,j5)C(i1,j6)

x1k=16C(i1,jk) より
B2C(i1,j7)C(i1,j8)C(i1,j9) s.t. x1C(i1,j7)C(i1,j8)C(i1,j9)

これはBoxLineの定義である

列の場合も同様

投稿日:2023118
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

あーく
あーく
111
209107
使える数学、面白い数学の分かりやすい解説を心がけています。

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. BoxLineとは
  2. PointingPairとは
  3. BoxLineとPointingPairの同値性 概要
  4. BoxLineとPointingPairの同値性 証明