世界を動かす技術を、日本語で。

Show HN: リバースマインスイーパー

概要

この文章は、パズルゲームの 難易度判定基準各難易度で必要な論理手法 について解説しています。 各難易度は使われる 推論技法 によって分類され、 スコアリング方法解答時間の見積もり も説明されています。 難易度ごとに 必要な手法の数や深さ が設定され、グリッド生成時に自動的に判定されます。 難易度の詳細や ヒントシステム の挙動も記載されています。 スライダー調整によるグリッド生成の仕組みも説明されています。

難易度判定基準と推論技法

  • Medium(中級)
    • min subset deductions 2 :最低2回の 二つの手がかりを比較する「部分集合」推論 が必須
    • 難易度を上げる場合、必要な部分集合推論の回数を増やす設定
  • Hard(上級)
    • min overlap deductions 2 :最低2回の 二つの手がかりが重なる「オーバーラップ」推論 が必須
    • さらに、 部分集合推論が最低1回 含まれることが条件
  • Extreme(超上級)
    • min what-if deductions 2 :最低2回の 仮定(what-if)推論 が必須
      • あるマスに仮に花(またはバツ)を置き、矛盾が発生するかを検証する手法
    • min chain depth 2 :最低1回は 2ステップ以上の仮定チェーン が必要
      • 1ステップのみの場合はオーバーラップ推論に近く、2ステップ以上でより深い論理性を保証
      • チェーンの長さは MAX_WHAT_IF_FIRINGS で上限設定
  • Insane(激ムズ)
    • min either-way deductions 0 (通常はExtremeの上限を超えるチェーンが必須)
    • 必要に応じて either-way(両方向)推論 も要求可能
      • あるマスを2通りに仮定し、どちらでも共通するマスの値が確定する「色分け」的手法
      • 最も希少かつ高度な論理技法
      • closest-match flag が1以上の場合は近似グリッドであることを示す

推論技法と難易度の対応

  • Basic → Easy
    • 1つの手がかりのみで完結する推論
      • 既に満たされた場合は残り全てが空白、未確定数=残り花数なら全て花
  • Subset → Medium
    • 2つの手がかりを比較し、片方の未知マスが全てもう一方にも見えている場合に差分を確定
  • Overlap → Hard
    • 2つの手がかりの重なり部分の最小・最大値から、片方のみが見るマスを確定
    • Hardでは必ずSubset推論も含む
  • What-if → Extreme
    • Sudokuの「仮定チェーン」類似
      • あるマスに仮置き→ルールに従い推論→手がかり破綻で矛盾確定→逆が正解
      • チェーンは数ステップまで( MAX_WHAT_IF_FIRINGS)、ヒントでは手順を明示
  • Beyond the cap → Insane
    • Extremeのチェーン上限を超える「深い仮定チェーン」および either-way 技法
      • 両方向仮定で共通確定マスを導く
      • メモ取りが推奨される難易度、ヒントも両方向を案内

難易度スコアと解答時間見積もり

  • スコア範囲
    • Easy:4–19
    • Medium:20–39
    • Hard:40–59
    • Extreme:60–79
    • Insane:80–100
    • 各スコア帯は重複せず、数値が高いほど確実に難しい
  • サブメトリクス
    • Easy:解きやすさ・自由度
    • Medium/Hard:必要なSubset/Overlap推論数
    • Extreme:仮定チェーンの総深度(回数でなく深さ)
    • Insane:either-wayピボットの両分岐分の作業量
  • 解答時間見積もり (EST_TIME)
    • 通常マーク:1秒/マス
    • 基本推論:2秒/回
    • Subset:14秒/回
    • Overlap:26秒/回
    • What-if:15秒+10秒/ステップ
    • Either-way:35秒+分岐ごとに追加

ゼロの扱いとグリッド生成

  • 0タイル(ZERO_CLUE_RULES)
    • Easy/Medium:1~2個
    • Hard:必ず1個
    • Extreme/Insane:0個
    • 生成時に必要数を維持、余分な0は削除、不足時は追加、不正なものは却下
  • スライダー調整
    • グリッドの必要条件をスライダーで指定
    • 各クリックで最大90候補を試行、条件に合わなければ最も近いものを提示(closest-match flag表示)
    • より厳しい条件の際は大きめのボード推奨、難問の出現率向上

ヒントシステム

  • ゲーム内ヒント
    • ロジックエンジンが人間のように一手ずつ推論し、使った技法を記録
    • ヒントはどのマスを仮定し、どの手がかりが破綻するかまで案内
    • Insaneでは両分岐の共通確定マスも明示

このように、各難易度は 必要な論理手法の数・深さ によって厳密に判定され、 自動生成・ヒントシステム もその基準に従って設計されています。

Hackerたちの意見

これが逆マインスイーパーだなんて、どう考えても理解できないよ。爆弾の代わりに花があるだけじゃん。

うん、説明としてはあんまり良くないかもしれないけど、俺の意図は最初から全てのヒントが見えてるってことなんだ。探索じゃなくて、爆弾を避けるんじゃなくて花を追加する感じ。主な違いは、最初から全てのヒントが見えてることで、探して推理するスタイルになるってことかな。反応するんじゃなくて。

マインスイーパーでは、最初は何も見えなくて爆弾を避けながら探索するけど、こっちは最初から全てのヒントが見えていて爆弾を配置するんだ。でも実際には、爆弾がどこにあるかを特定するのは、爆弾がどこに必要かを特定するのと全く同じ論理だから、すごく似てるよ。唯一の機能的な違いは、全てのヒントが最初から見えているか、発見する必要があるかってことだけだね。

右クリックと左クリックが逆になるんだよね。

「対偶マインスイーパー」って言いにくいからね。

数字のヒントが与えられて、地雷をクリアする代わりにそれを置く必要があるっていうのが逆転してる感じだね。俺にはかなり「逆」って感じるよ。

俺は推測しなきゃいけなかったよ。もし爆弾の数がわかってたら、そんなこと考えなかったのに。 https://imgur.com/a/idfj1my 編集:間違ってた。ありがとう、スティーブ。

「4」のヒントが解法を強制すると思う。

1列目、5行目の「2」にはもう2つの花があるから、2列目4行目の空いてるスペースは空白でなきゃいけない。だから、その上のマスには花が置かれるし、角は空白になる。推測はいらないよ。

最初の列、下から2行目に「2」があって、もう2つのひまわりがあるから、隣の3番目のマスは空いてるはずだね。

みんなへ:推測しなきゃいけないと思ったら、ヒント機能を使ってね。もっと上級のレベルでは、基本的に「推測」して、その推測が(例えば「鉛筆モード」を使って)有効な解決策につながるか、矛盾が生じるかを確認しなきゃいけない。

今プレイしたゲームには、情報が足りないボックスがいくつかあったんだ。例えば、そこに指している数字が一つだけで、推理できなかった。普通のマインスイーパーだと、隣のボックスを開けたら自動でクリアされるようなやつだと思う。スクリーンショットは撮らなかったけど、分かってくれるといいな。もっとゲームをプレイすれば、これが安全な×だって学ぶかもしれないけど、実際には情報が不足してると感じた。ヒントとか探してみたけど、すぐには見つからなかった。

Hacker Newsで議論の続きを見る