数独の X-Wing とは何を意味するのか
どんな形なのか、なぜその候補消去が「たぶん」ではなく「必ず」なのか、盤面を闇雲に眺めずに見つける手順、そして Swordfish が同じ理屈のひと回り大きい版である理由。
X-Wing は、多くの人が最初に出会う「数字を一つも埋めない手筋」です。マスを確定させず、候補数字を消すだけ。だから初めて使ったときには前に進んだ気がしませんし、実際この段階で静かに勘に切り替えてしまう人がかなりいます。
それでも越える価値があります。X-Wing が消す候補は「見込みが薄い」ものではなく、論理的にありえないものだからです。理由が腑に落ちてしまえば、この形は暗記すべき豆知識ではなく、見えて当たり前のものに変わります。
どんな形なのか
数字を一つ決めて、その数字だけを見ます。ここでは 7 としましょう。そのうえで、7 の入れる場所がちょうど二マスしか残っていない行を探します。三マスでも四マスでもなく、ちょうど二マスです。
一つ目の行の二マスと、二つ目の行の二マスが、まったく同じ二つの列に載っていれば、それが X-Wing です。
四つのマスを結ぶと長方形の四隅になります。名前の X は、その長方形に引ける二本の対角線から来ています。
なぜ消去が必ず成り立つのか
この二つの行は、それぞれどこかに 7 を持たなければなりません。そして各行で 7 が入れる場所は、長方形の二つの角しか残っていません。つまり上の行のどちらかの角が 7 を取り、下の行のどちらかの角も 7 を取ります。
その起こり方は二通りしかありません。左上と右下の角が 7 を取るか、右上と左下の角が取るかです。両方とも左の列に入ることはできません。そうなると右の列は、この二つの行の中に 7 を置く場所がなくなってしまうからです。
大事なのは、この二通りに共通していることです。どちらの場合でも、左の列はこの二行から 7 を受け取り、右の列も同じく受け取ります。どちらの行が供給するのかは分かりませんし、分かる必要もありません。二つの列は、すでに 7 の当てがついているのです。
推論はこれで終わりです。二つの列の 7 がこの二行の中で押さえられている以上、その列の他のどのマスも 7 にはなりえません。両方の列の残りのマスから 7 を消してください。マスは一つも埋まりませんが、盤面は確実に軽くなりますし、その直後に隠れ単数が一つ落ちてくることも非常によくあります。
縦横を入れ替えても成り立つ
ここまでの話は、行と列という言葉を入れ替えてもそのまま成り立ちます。ある数字の候補がちょうど二マスしかない列を二つ見つけ、それが同じ二つの行に載っていれば、その二つの行の残りからその数字を消せます。
見落とされる X-Wing の半分は、この転置した形です。理由は単純で、多くの人が最後まで一方向しか走査していないからです。
実際にどう探すか
候補数字で埋まった盤面から長方形を目で探すやり方は、まず機能しません。数字ごとに区切って進め、その数字がどれだけ埋まっているかをふるいとして使ってください。
- すでによく埋まっている数字を選ぶ。九個のうち六個か七個が盤上にあるようなものです。そういう数字は候補の置き場が少ないマスに押し込まれていて、それこそがこの形の必要条件です。
- その数字について、候補がちょうど二マスの行に印をつける。それ以外の行はまったく見ません。
- 印をつけた行を二つずつ突き合わせる。問いは一つだけ、この二行は同じ二つの列を使っているか。
- 使っていれば、その二つの列の残りからその数字を消す。
- 行と列を入れ替えて、もう一周する。
この手順なら、一つの数字について X-Wing の有無を判定するのに一分もかかりません。どの時点でも数行しか見ていないからです。満杯の候補数字の中から図形として見抜こうとすることが、この手筋を不可能に感じさせている原因です。
Swordfish はどこから来るのか
Swordfish は、いまの議論を二行ではなく三行でやったものです。ある数字の候補が同じ三つの列の中に収まっている行を三つ見つけます。ここが大事なのですが、各行の候補は二マスでも三マスでも構いません。三マスずつである必要はないのです。
この三つの行はそれぞれその数字を一つずつ持たねばならず、置き場はその三列しかありません。三行三列でちょうど埋まってしまうので、その数字は三つの列の残りのマスから消せます。
ソルバーがこの二つをまとめて実装するのはそのためで、実体はサイズを引数に取る一本のルーチンです。Sudoku - Calm Number Puzzle も X-Wing と Swordfish の判定を同じ fish ルーチンの n = 2 と n = 3 で回しており、どちらもエキスパートの帯に入ります。これらが要る問題とは、それより安い手筋では一歩も動かない問題だからです。
見つけたのに何も消えないとき
本物の X-Wing を見つけたのに、消せる候補が一つもない、ということは普通に起こります。消すはずだった候補が、そもそも盤面に残っていなかっただけです。判断を誤ったわけではなく、たまたま実入りがなかっただけのこと。次の数字に移ってください。この手筋を走らせる価値は安さにあるのであって、毎回決定打になるからではありません。
よくある質問
X-Wing で数字が確定することはありますか
直接確定することはありません。他のマスから候補を消すだけです。実際に起こるのは、その消去のおかげでどこかのマスやユニットに可能性が一つしか残らなくなり、そちらで確定するという流れです。すぐ埋まることを期待していると、何も起きなかったと勘違いしてしまいます。
四つのマスは別々のブロックにある必要がありますか
必須ではありませんが、実戦ではたいていそうなります。二つの列が同じブロックに収まっている場合は、もっと安い指差しや囲い込みがすでに同じ消去を済ませているのが普通で、その X-Wing は間違いではなく単に余分だということになります。
X-Wing と XY-Wing はどう違いますか
名前は似ていますが別物です。X-Wing は一つの数字が四マスで長方形をつくる話。XY-Wing は候補数字が二つずつの三マスの話で、軸のマスが二つの挟みのマスを見ていて、両方の挟みから見えるマスから数字を消します。このアプリではどちらもエキスパートの帯ですが、探すときに見ているものはまったく違います。
普通の問題を解くのに X-Wing は必要ですか
一番難しい段階でだけです。このアプリの入門からむずかしいまでの問題は、X-Wing なしで解けることが検証済みです。難易度はソルバーが実際に必要とした一番難しい手筋そのものであり、X-Wing はエキスパートの帯にしか現れません。
実際の問題で試す
Sudoku - Calm Number Puzzle は、解くのに実際に必要な一番難しい手筋で難易度を決め、盤面を見せる前に解が一つであることを検証し、ヒントでは数字を埋めるだけでなく手筋の名前を答えます。無料、オフライン、広告なし、アカウントなし。