0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

アクレを解く — ヒント予算は「分割」そのもの。作者がダイヤルを完全所有するパズルで、ルールラダーの中段が空洞になる

0
Posted at

アクレ (Aqre) を、4 つのルールセット内蔵でブラウザに実装した。n×n の盤面のいくつかのマスを黒く塗る。黒マスは全体でひとつながり数字の書かれた領域はちょうどその数だけ黒マスを含みどの行・列でも同色 4 連は禁止——連続 4 マスのルールは黒にも白にも効く。だから 4×4 以上では、何も塗っていない盤面が既に違法だ。ソルバー内蔵パズル第 39 弾。

デモ: https://sen.ltd/portfolio/aqre/
リポジトリ: https://github.com/sen-ltd/aqre

Aqre

このパズルを選んだ理由は 2 つ。

ヒント予算は分割そのものである

前回のぬりみさきは「ヒントの位置を作者が選べない」パズルだった: 丸は完成盤の岬の位置に強制され、作者にできるのは数字を消すことだけ。アクレは正反対の極にいる。ヒントは領域に載り、領域分割は数字を印刷する前に自由に引ける。細かく割れば数字は増え、粗く割れば減る。さらに、答えの色境界に沿って線を引けば全領域が単色(all-or-nothing)になり、数え上げルールだけで盤面が完成する。作者が情報供給を完全に所有する——難易度のラインナップは抽選ではなく設計だ。連作でこの両極(強制されたヒント位置 ⟷ 自由なヒント予算)が隣り合ったので、ダイヤルの効き方を全部測った。

4 連禁止は両色に効く

同色 4 連の禁止は黒専用ではない。どの 1×4 窓も、数字を 1 つも読む前から両方の色に 1 マスずつ借りがある。この対称性が黒密度を帯に固定する: 生成した合法盤面の黒率は 6×6 で中央値 55.6%(範囲 44.4–69.4%)、10×10 で 58.0%(51.0–64.0%)——サイズが伸びても帯はほぼ動かない。ヒントなしの合法盤面(黒ひとつながり + 両色 4 連禁止)の全数は 2×2 で 14、3×3 で 219、4×4 で 798。4×4 は 2^16 = 65,536 通りのうち 798 しか生き残らない——初めて 1×4 窓が存在するサイズで、ルールが空間を 1.2% まで刈り込む。

ルールは 4 段

レベル ルール
quota 領域の数え上げ、両方向: 数字に達したら残りは白、自由マスが不足分ちょうどなら全部黒。単独では領域境界を一度も越えられない——空盤面から着火できるのは数字 0 か領域サイズちょうどの領域だけ
quad 同色 4 連禁止(両色・両軸): 1×4 窓に同色 3 マスが決まれば 4 マス目は逆色
bridge 黒の連結性を局所化する関節点 DFS 1 本: 黒集団から遮断された自由マスは黒になれず(ポケット)、黒同士の唯一の通路は黒確定(ブリッジ)
probe 1 マスに色を仮置きし、下位ルールを fixpoint まで回して矛盾したら棄却

実測 — 中段が空洞のラダー

300 盤/サイズの生の生成ストリーム(ランダム分割・領域最大 5 マス + ランダム合法盤面 + 全領域に数字)。推測なしの fixpoint だけで完成する率:

盤面 quota +quad +bridge +probe ストリーム中の一意解率
6×6 0.0% 0.3% 1.3% 21.3% 22.3%
8×8 0.0% 0.0% 0.0% 7.7% 8.3%
10×10 0.0% 0.0% 0.0% 0.7% 1.0%

異様な表だ。quota 列は全サイズ 0.0%——数字を読む唯一のルールが、ランダム分割の上では単独で 1 盤も完成させられない。領域境界を越えられないからだ。そして 8×8 以上では +quad も +bridge も増分 0.0pt、probe に達した瞬間に一気に跳ねる。連作の兄弟たちのラダーは下から順に積み上がる階段だったが、アクレのラダーは下 3 段でほぼ登れず、最上段だけが働いているように見える。

Ablation — 空洞に見えた中段が、全部急所

では quad と bridge は無駄なのか。全ラダーから 1 ルールずつ抜く:

盤面 full −quota −quad −bridge
6×6 21.3% 0.0% 0.0% 1.0%
8×8 7.7% 0.0% 0.0% 0.0%
10×10 0.7% 0.0% 0.0% 0.0%

どの 1 ルールを抜いてもほぼ全崩壊。増分 0.0pt だった quad を抜くと、6×6 ですら 21.3% → 0.0%。矛盾しているように見えるが、していない: probe は「仮置きして下位ルールで矛盾を探す」ルールなので、下位ルールは probe が世界を感知するセンサーだ。単独では 1 マスも進めないルールが、probe の内側では矛盾検出器として全荷重を支える。連作の教訓「incremental だけで評価すると冗長なルールが本質的に見える」(クロット)の正確な裏返しで、incremental だけで評価すると本質的なルールが無駄に見える。両方向から測って初めてラダーの形が分かる。

前々回のぬりみさきの ablation は「4 つの別々の定理が全部同時に急所」だった。アクレも冗長性ゼロだが、理由が違う: ぬりみさきは盤面が情報に飢えすぎて予備を持てなかった。アクレの中段はそもそも単独歩行できない設計で、probe という運び手に乗って初めて仕事をする。

2 つのダイヤル — 効かない方と、全域に効く方

作者が回せるダイヤルは 2 つある。数字の保持率(密度)と、分割の粒度だ。まず密度、8×8・各点 150 盤:

密度 一意 probe 解決 bridge 解決 平均数字数
0.00 0.0% 0.0% 0.0% 0.0
0.25 0.0% 0.0% 0.0% 6.0
0.50 0.0% 0.0% 0.0% 12.9
0.75 0.0% 0.0% 0.0% 19.3
1.00 8.0% 7.3% 0.0% 26.0

密度ダイヤルはほぼ死んでいる。0.75 まで回しても一意率 0.0%、1.00 でようやく 8.0%。数字を 19 個も印刷して 1 盤も決まらない。ところが分割の粒度(領域の最大サイズ)を回すと:

maxSize 平均領域数 一意 probe 解決 quota 単独解決
1 64.0 100.0% 100.0% 100.0%
2 46.0 46.0% 44.7% 0.0%
3 36.4 22.0% 22.0% 0.0%
5 26.3 3.3% 3.3% 0.0%
8 18.8 2.0% 0.7% 0.0%
12 13.6 0.7% 0.0% 0.0%

100% から 0.7% まで、一本のダイヤルが全域を掃く。maxSize 1 は全マスが自分の領域に 0/1 の数字を持つ——つまり答えがそのまま印刷されている——ので当然 100% だが、注目は 2 に落とした瞬間 quota 単独が 100% → 0.0% に即死し、一意率も半分になること。兄弟たちの密度スイープが辿った緩やかな坂とは別物の、断崖の連続だ。ぬりみさきには回すダイヤル自体がなかった。アクレのダイヤルは、両端の外まで届く。

Bank — 作者のダイヤルが産む難易度と、産めない難易度

出荷 bank の生成がこの話を実演する。quota 級の盤面はランダム分割からは絶対に出ない(表 1 の 0.0%)が、答えの色境界に沿って単色領域を引けば全数字が 0 か領域サイズになり、quota だけで解ける盤面が任意サイズで作れる——ダイヤルを最弱まで回す操作そのものだ。一方で釣り上げ方式(数千 attempt のランダム分割)では、8×8 以上に quad 級は 0 枚、10×10 には bridge 級も 0 枚。中段の難易度は大盤では存在せず、UI の Rules メニューは産めない難易度をグレーアウトする。ぬりみさきでは下位 2 段が消えた。アクレでは中段だけが消え、最弱と最強が残る——最弱は作者が構成できるから、最強は確率が拾うから。

敵対的に数字を間引いた出荷盤面は、10×10 で領域中央値 57 個中、数字中央値 39 個を残す。一意性証明の探索は 6×6・8×8 で中央値 0 分岐(半数以上の盤面で fixpoint が単独で証明を完結)、10×10 でも中央値 32.5 分岐。

probe = 一意の法則、連作 2 度目の破れ

クロットで初めて破れ、ぬりみさきで全点復活した「probe 解決率 = 一意解率」の法則は、アクレで再び破れた。表 1 の probe 列と一意列の差がそれで、一意なのに probe の fixpoint が完成させられない盤面は 6×6 で 67 盤中 3、8×8 で 25 盤中 2、10×10 で 3 盤中 1。1 マスの仮置きでは見えない、複数マスが同時に組み替わる別解候補を探索だけが潰せる——法則は「成り立つ方が普通だが、保証はない」ものだと連作 39 作目にして確定した。

おまけ — 8 時間ハングした生成器と Las Vegas リスタート

統計の測定中、固定シードの 10×10 盤面生成が 2 プロセスとも 8 時間以上ハングした。生成器はランダム化 DFS(quad + bridge を各ノードで伝播)で、ほとんどの試行は数十ノードで終わるが、最初の運の悪い分岐が天文学的な袋小路に探索を閉じ込める——ランタイムが重い裾を持つ、この種の探索の古典的な病理だ。処方も古典的で、5,000 ノードで打ち切って引き直す Las Vegas リスタートを 1 つ入れるだけ。リスタート発火率は 1% 未満、シードごとの決定性は保たれ、ハングは消えた。

検証

  • 解数の突き合わせ: ラダーとコードを共有しない総当たり(行優先 DFS、枝刈りは明文ルールの言い換えのみ、葉は独立バリデータ採点)と、4 レベル各々の伝播付き探索の解数が、完走した全 (盤面, レベル) ペアで一致——534/534。伝播を持たない弱レベル探索は 26 ペアが 30 万分岐の上限に達しスキップ(数え落としではなく計測対象外として報告)。
  • 全数アンカー: ヒントなし 2×2 / 3×3 / 4×4 盤を素朴なビットマスク列挙・総当たり・探索エンジンの 3 通りで全列挙——14 / 219 / 798 盤で全エンジン一致。
  • Bank の整合性: 出荷全 45 盤は探索エンジンで一意性を再確認済み、grade は「推測なしで完成できる最弱レベル」で付与。

全 38 テスト。npm test で回る。

まとめ

  • アクレのヒント予算は領域分割そのもので、作者が完全所有する。粒度ダイヤルは一意率 100% から 0.7% まで全域を掃き、密度ダイヤルはほぼ効かない。
  • ラダーは中段が空洞に見える(8×8 で +quad/+bridge 増分 0.0pt)が、ablation ではどれを抜いても全崩壊——単独歩行できないルールが、probe のセンサーとして全荷重を支える。incremental と ablation の両方向から測って初めて見える構造。
  • 中段の難易度グレードは大盤では存在しない(8×8 以上に quad 級 0 枚、10×10 に bridge 級 0 枚)。最弱は作者が構成でき、最強は確率が拾う——消えるのは中間だけ。
  • probe = 一意の法則は連作 2 度目の破れ。10×10 では一意 3 盤中 1 盤が probe 不能。
  • ランダム化 DFS の重い裾で生成器が 8 時間ハング。5,000 ノードの Las Vegas リスタートで解決。

TypeScript + Vite、ランタイム依存なし。コードは全部公開している。

リポジトリ: https://github.com/sen-ltd/aqre

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?