0

Bombe 攻略(60-,変数なしモード)

1179
0
$$$$

Bombeというマインスイーパーのゲームが超面白いのですが、日本語の攻略記事が1つしか見当たらなかったので私も書いてみることにしました。
この記事では、60-ルール、変数なし300-ルールといったルール数に縛りがあるモードについての攻略を中心に書こうと思います。普段文章を書かない人間なので色々突っ込みどころがあるのは許してください。誤字脱字ミスがあったら教えてください。
先駆者様の素晴らしい記事
先駆者様の素晴らしい動画群

Bombeとは?

Bombeはマインスイーパーを解くマシンを作るゲームです。この記事はBombeのネタバレ要素を沢山含んでいるので、まだBombeをプレイしていない人は今すぐこの記事を読むのをやめて自分でプレイしましょう。Demo版なら無料です。 ここから遊べます
このゲームのチュートリアルは若干分かりにくいですが、ゲームモード解放までは 先駆者様の素晴らしい動画群 を見れば何とかなると思います。

ルールの核を作る

まずは既存のルールを消して0から作りましょう。
$x→x+$ $ x→x-$ $ x→x+2^*$ のような基本的な1領域のルールを入れていきます。これを入れることでルールの汎用性が上がります。構造全体を把握して、より少ないルールで変換が終わるように頑張りましょう。
それが終わったら、複数領域の基本ルールを入れましょう。他のモードでの経験を生かして重要なルールのみを入れましょう。

ルールを追加する

核を作り終わったら、実際のマインスイーパーの盤面を見てルールを追加しましょう。正答率の高い問題から見るのがおすすめです。ルールの個数に制限があるので目の前の問題をクリアする事にムキになり汎用性の低いルールを作らないようにしましょう。解けない問題があれば飛ばしても構いません。☆は罠です。

ルールを作る時はより汎用性の高いものにするために、基本的に以下の事に気を付けましょう。

  • 変数を導入できないか考える。
  • ボムや箒を指定するのは基本的には弱い。もっと一般化した方が良い。
  • 領域を汎用性の高いルールに置き換えられないか考える。例えば$2^*$より$1!$の方が汎用性が高い。
  • ?を入れて✅が出るかどうかをとにかく全部試す。
  • 0になっている部分に?を入れてルール適用部分に追加して✅が出るかどうかをとにかく全部試す。(忘れがち)
    汎用性の低いルール 汎用性の低いルール
    汎用性の高いルール 汎用性の高いルール

ルールを追加した後はそのルール単体がどれくらいの面をクリアしたかを把握しましょう。

ルールを削る

どんどんルールを追加していくと、やがては制限に引っかかってしまいます。ルールを削ることが重要です。ルール一覧で行動または領域でソートして、あるルールが他のルールの下位互換になっていないかどうか目を皿のようにして探しましょう。当然、番号が若いルールが下位互換になりがちです。

計算量に気を付ける

このゲームは汎用性の高いルールを追加するだけではいいスコアを出す事が出来ません。パソコンが一定時間内に計算できる量は限られているからです。計算量を考えずルールを追加すると実行が全く終わりません。しぶしぶスキップ領域数を減らします事になりますが、それだとスコアは下がってしまいます。
計算量改善はこのゲームの本質です。

そもそも重いルールを作らない

4領域のルールは強そうに見えますが、めちゃくちゃ重いです。基本的には使わないようにしましょう。実際、私の300-変数なしルールでは4領域のルールは一つも使われていません。60-ルールでも2,3個にとどめています。また、変数の重さも重さの原因です。私は変数3個以上のルールをなるべく作らないようにしています。3領域変数2個が目安です。

既存の領域より大きくなるルールをあまり作らない

既存の領域より大きい領域を作る可能性があるルールを導入すると、あまり意味のない大きな領域が沢山出来て大変なことになってしまいます。
生成される領域が既存の領域に含まれるようなルールを作りましょう。

ルールを削除する(が、削除しすぎないように気を付ける)

有効なルールが多すぎると計算がどんどん遅くなっていくので、意味のないルールを削除しましょう。しかし、✅が出ていても削除するとルールの動作に支障が出る事があります。ルール全体を把握して、どのルールに影響が出るかを考えましょう。

意味のないルールが作られないようにルールに制限を設ける

このテクニックに気づくのに100時間くらいかかりました。このゲームではルールを生成するという行為に多くの時間がかかります。ルールを適応する範囲を絞って無駄なルールを作らないようにしましょう。
例えば下のルールの場合、左の $2+$$1-$ が重なる左下の $?$ の部分が $0$ だと、生成されるルールは左の2+のルールの下位互換になります。
汎用性の高いルール 汎用性の高いルール
なので、左下を $1+$ にすることで、意味のないルールが生成されるのを防ぐことが出来ます!
対称性より右下の部分も同様です。
良いルール 良いルール

おわりに

具体的なルールについて踏み込むと、色々ネタバレになるのでこれくらいにしておきます。
個人的には極めるなら実行にあまり時間のかからない300-をお勧めします。競技人口も少なめで順位を上げやすいです。
最後に私のスコアの分布を載せておきます。自分のスコアと比較して、どのレベルに伸ばしどころがあるかなどを比較して参考にしてください。300-はこれからちょっとだけやり直す予定なのでスコアが変わってるかもしれません。
画像の名前 画像の名前
画像の名前 画像の名前
画像の名前 画像の名前
画像の名前 画像の名前
画像の名前 画像の名前
画像の名前 画像の名前
画像の名前 画像の名前
画像の名前 画像の名前
やりすぎてバニラを超えてしまった やりすぎてバニラを超えてしまった

投稿日:915
OptHub AI Competition

この記事を高評価した人

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

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

バッジはありません。

投稿者

simasima
simasima
180
27753
OMC橙(2499/5位)OMC030,034,036,038優勝/OMC015,OMC032単独writer/AtCoder橙

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中