A - Treant's Forest Editorial
by
Moegi
通路の組み方
盤面については、以下のことが言えそうでした。
長い袋小路は無駄が多そう。
ある経路が一本の袋小路だと、一度探索済みになると二度と通られないため、その床の踏破回数の期待値は高くて 2 程度になる。サイクルは避けたい。
サイクルがあると、短い経路が見つかった時点で長い経路は使われなくなる。なのでグラフは木にしたい。一本の長いパスを作りたい。
長い歩数を稼ぐには、結局どこか一本の経路を多用することになりそう。パスはできるだけ長くしたい。両端に袋小路を多めに用意する。
作った一本のパスの往復回数を増やしたい。小さな袋小路を両端に多めに用意すると有効。
上の白黒画像は、ドット絵ツールで描いた画像。それを AI に投げて入力形式に変換し、複数パターンをテストして平均スコアの高いものを採用した例。
20×20 盤面で平均スコアはおよそ1400。
花を隠す
花はできるだけ終盤まで見つからないようにしたい。
いくつかの隠し方(画像の通り)を思いつく限り列挙し、コードにそのまま埋め込んだ。
- 埋め込んだ後、花から入口までが連結かどうかを簡易チェックする。
- 簡易チェックに落ちた場合は、条件を緩めた別パターン(消費マスが増える/隠蔽確率が下がる)を採用する。
コード上での実際の盤面構築
- 花を隠す盤面パターンを埋め込む。
- 左右の両端から幅 3 程度の位置に縦パスを作る。
- 縦パスに横枝を生やす。
- 適当な左右の横枝ペアを、一本のパスで連結する。
- パスを焼く(主経路を確定させるイメージ)。
- 入口と花から任意の床へ到達可能になるまで掘り進めて連結し、valid な盤面にする。
- 盤面の微調整
最終的な提出
posted:
last update: