CODINGAME FALL CHALLENGE 2023 参加記
概要
CodinGameに参加したので環境や考察についてまとめる。 最終結果はGold466位で、全体524位でした。
https://www.codingame.com/contests/fall-challenge-2023
環境
VSCode
Rust
ローカル環境とWebIDの同期について 以前は下記拡張を使っていたが、現在では配信も停止しているようだった。 今回は使わず、VSCodeのコードをコピペして提出していた https://www.codingame.com/forum/t/codingame-sync-beta/614
考察
各ドローンを移動させたときの評価値を取り、一番良い評価値の動きを選択する。 全移動を試すと時間切れになってしまうので、下記のように10stepで探索
for dx in (-600..=600).step_by(10) {
for dy in (-600..=600).step_by(10) {
}
}
評価方法
モンスターに食われないようにする
- visibleの情報と移動先候補の値を利用し、モンスターに食われるようだったら評価値を大幅にマイナスにした
- 下記実装を利用
魚に近づくようにする
- ドローン毎にターゲットの魚6匹ずつを決めておく
- ターゲットの魚は深くて端のものからリストに追加する
- レーダーの情報を頼りに、ターゲットの魚のリストの1番目の魚に近づくようにする
- visibleに入っている場合はレーダー情報ではなくvisibleの情報を利用する
- 味方ドローンが既にScanしている魚はスキップする
潜るのを優先
- 魚が真下にいる場合はジグザグ動く挙動になってしまったため、下に潜ることを優先
浮上優先
- 自ドローンの魚を全部捕まえた場合は浮上優先
ライトつけるかどうか
- ドローンの深さ周辺に未スキャンのターゲットがいたらライトをつける。魚のtypeから深さを判断。
やりたかったこと
- 味方ドローンが死んだときにサポートする動作
- 二機のドローンのレーダー情報を利用して、各魚の位置を大まかに推定
- 敵がスキャンしていない魚の追い出し
- 敵の位置を見て、全スキャンしていない状態でも浮上し逃げ切る動作