Orcantus

Guide

Signal(回転ネットワーク)の解き方 — 上級編: 未確定マスが半分以上残るときの進め方

初級編では境界+隣接だけで全マス確定する4×4盤を、中級編では6マスだけ1回の仮置きが必要な5×5盤を扱いました。この上級編では、境界+隣接の確定だけでは盤面の半分以上が未確定のまま残る問題を扱います。実例はn=6・シード"notes-solve-hard"・難度指定hardで生成した6×6盤面です(E.generate(6, 'notes-solve-hard', 'hard')、67回目の試行でこの条件を満たし、Signal側の難度判定でもlevel: "hard"でした)。

結論。未確定マスが多く残るときは、中級編と同じ「候補が最も少ないマスから仮に置いて波及させる」手順を、1回で終わらせず何回か繰り返す。 この実例(36マス中21マスが未確定)では、盤の左端の列にある3マスに順番に仮置きすることで、そのたびに周囲へ確定が連鎖的に波及し、3回の仮置きだけで残り21マスすべてが自動的に埋まりました。ただし、この「3回で解けた」という回数は、この実例固有の結果であり、上級と判定されたすべての問題が同じ回数で解けることを意味しません。

境界+隣接だけでは、盤の左側4列がまるごと未確定のまま残る

初級編・中級編と同じ手順(境界の制約→隣接マスとの整合性チェックの繰り返し)を、この6×6盤面に6巡適用すると、36マス中15マスしか確定しません(Signal側の難度判定でもlocalRounds: 6)。確定した15マスのうち12マスは盤の右側2列(列5・列6)に集中しており、残る3マス(行3列2・行3列3・行4列3)は中央付近で単独に確定します。それ以外の21マス(列1〜4のほとんど)は未確定のまま残ります。 これは中級編の6マスに比べて未確定の範囲がはるかに大きく、1回の仮置きだけでは全体を解き切れません。

候補が少ないマスから順に、仮置き→波及を繰り返す

中級編と同じ考え方(候補数が最も少ないマスを選び、仮に置いて隣接チェックを波及させる)を、未確定領域(21マス)の中で繰り返し適用します。この実例では、盤の左端の列(列1)にある3マスが、いずれも2〜3択まで絞られており、仮置きの起点として選びやすいマスでした。

1回目: 行1列1(マス0)

マス0(行1列1、左上の角)は「右」か「下」かの2択です。「右」を仮に選んで波及させると、21マス中4マスが新たに確定し、未確定は17マスまで減ります(この時点でマス6(行2列1)の候補も、3択から「右」「下」の2択まで絞られます)。

2回目: 行2列1(マス6)

未確定17マスの中で、マス6(行2列1)は「右」か「下」かの2択です。「右」を仮に選んで波及させると、さらに11マスが新たに確定し、未確定は6マスまで減ります(この時点でマス24(行5列1)の候補も、3択から「右」「下」の2択まで絞られます)。

3回目: 行5列1(マス24)

未確定6マスの中で、マス24(行5列1)は「右」か「下」かの2択です。「右」を仮に選んで波及させると、残り6マス全部が一気に確定し、未確定マスは0になります。埋め終えた盤全体で点灯判定すると、信号源(盤中央付近、行4列4=マス21)から36マス全部に点灯が届き、輪もできていません。これが正解です。

この3回の仮置き(マス0・6・24、いずれも「右」)だけで、境界+隣接では埋まらなかった21マスすべてが連鎖的に確定しました。列1にある3マスへの仮置きが、同じ列だけでなく盤全体へ波及した形です。

仮置きを誤ったときに何が起きるか

3回とも「右」を選んで正解に到達しましたが、もし1回目でマス0を「下」に選んでいたらどうなるかを確かめておきます。「マス0=下」を仮定して波及させると、隣接チェックの範囲では矛盾(候補が0件になるマス)は起きず、そのまま残りのマスも(中級編と同じ考え方で)候補が少ない順に確定させていくと、最終的に36マス全部が埋まります。ところが、埋め終えた盤全体を点灯判定すると、信号源から点灯するマスが36マス全部には届きません(実際に確認したところ、isSolvedの判定は不成立でした)。中級編と同じく、隣接チェックの範囲では検出できない「輪ができる」または「一部が孤立する」矛盾が、盤全体を埋め終えたあとに表面化します。

このため、上級編のように仮置きの回数が複数になる問題では、1回仮置きするごとに全部を埋め切ってから点灯判定する必要はなく、途中で「進捗表示(◯ / 36 接続)の伸びが止まった」「一手戻す前の状態と比べて明らかに閉じた形ができている」と感じた時点で、一手戻す(Undo)を使って直前の仮置きまで戻るのが実践的です。

上級と判定される問題の性質について

Signal本体の難度判定(README「難易度」節)は、上級(hard)を「局所推論だけでは残り30%以上かつ8マス以上が未確定で、かつ隣接する未確定領域が6マス以上まとまっており、さらに探索の深さや分岐が一定以上」と定義しています。この実例(未確定21/36マス=58%、単一の未確定領域)はこの基準に当てはまりますが、README自身が明記するとおり、この「分岐判断の回数」は探索木の中での分岐回数であり、人間が実際に判断する回数と直接対応するとは限りません。この記事の3回という仮置き回数も、この実例で実際に起きたことの記録であり、上級と判定された別の問題でも同じ回数で解ける保証ではありません。

タップ手順と検証

出題時点から正解までの、各マス(0〜35)のタップ回数(時計回り)は次のとおりです。

マス:        0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17
タップ回数:   1  0  3  2  0  0  2  0  1  1  1  3  1  0  0  1  0  2
マス:       18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
タップ回数:   0  3  0  2  1  0  2  3  1  0  0  1  0  3  2  3  2  0

合計41回。実際にこの回数どおりにタップした結果が正解と完全に一致し、点灯判定も36マス全部に届くことを、Node.jsでsignal/engine.jsを直接実行して確認済みです(盤中央付近、行4列4=マス21が信号源)。

誤りやすい判断

読者の検証方法

この記事が確認していないこと

この結果が言っていないこと

  • 検証はsignal/engine.js・signal/app.js(エンジンv3、2026-09-29時点)を対象にしています。将来の版で表示・判定基準が変わる可能性があります。
  • 上級(hard)の判定基準そのもの(具体的なしきい値)は、README自身が「実プレイによる校正は未実施の暫定ルール」と明記しています。この記事も、その基準がどの程度「人間にとっての難しさ」と対応するかまでは検証していません。