yamake's blog

主に競プロ、たまに自転車

Codin Game Fall Challenge 2020 参加記

Codin Game Fall Challenge 2020に参加しました(リンク

参加したのはボンドさんのツイートで、こどげ思ったより始めるハードル低いかもと思ったことがきっかけ。

ルールはツカモさんの記事に丸投げして、大まかな方針、最終方針でやったけどダメだったこと、やって良かったこと、結果、感想を書いていきます。↓ツカモさんの記事。

https://tsukammo.hatenablog.com/entry/2020/11/13/024329

 

大まかは方針転換は2回やりました。

やったこと

最初期: CASTして無駄にならない呪文をCAST、足りなかったらREST、1/2の確率でLEARNする。

無駄CAST以外を適当にCASTして、BREWできたらBREWするとだけしたコードでBronzに昇格し、Bronzでボロボロに負けたのでとりあえずLEARNさせようとしたコードです。

このLEARNする確率をうまい具合にいじったら180位くらいまでいけて、意外と戦えるかもしれないと思いました。

中盤: 初手LEARN->3手全探索->queueに入れて実行

今のターンから数えて3手を全探索し、weight={1,2,3,4}とした重みづけをインベントリに施して、Score+重みづけ和を最大とするように次の手を選択しました。

次の3手で最も良いのを探したんだから、全部実行しなきゃダメでしょと思ったので実行コマンドをqueueにpushして、queueが空の時だけ探索しました。

終盤: 初手LEARN->ビームサーチ

3手全探索おばあちゃんではSilverボスに勝てなかったので、ビームサーチを書きました。このおばあちゃんでやったことはもう少し詳しく書きます。

基本的には最初LEARNして残り探索という方針を取りました。

やってみてダメだったこと

盤面を見てtierごとの評価の重みを変更すること。

終盤は安いポーションを早く作り、6個目のポーションを取りやすくすること。

自分3手以上、相手次のターンでbrewできるポーションbrewする選択肢を枝刈り(多分バグを埋め込んだせい、方針自体は良さそう)。

やってみて良かったこと

 ビーム幅を可変にした。序盤は全探索をし、自分がポーションを4つ取って以降は試合終了を見越して幅150~200のビームサーチに切り替えた。

序盤のLEARN時に強い呪文を優先するのではなく、明らかに弱い呪文を避けるようにした。

初期呪文を2,0,0,0以外封印した。

20ターン目以降LEARNする選択肢を枝刈りした。

勝ちの決まるBREWは最短で取りに行くこと(勝ちの決まる判定はがばがばでもある程度有効だった)。

REST->BREWの動きをさせないために、速いターンのBREWに若干のボーナスを付与した。

結果

f:id:yamakeeee:20201124205239p:plain

 最終GOLD、全体226位でした。

事前に練習した感じSilverはいけそうだけどGOLDは厳しいかもな~~と思っていたので、 予想外の高順位に満足してしまっています。

 

感想

 ものすごいハマりました。研究室でずっとこどげやっていたし、PCの前にいないときは戦略を考えたりしていました。めちゃくちゃ面白かったので、周りの人に布教していけたらなと思う反面、人生が大事なときは触るべきじゃないなとも思いました。修士論文さん......。

 日本人が上位にすごく多かったので、逐一目標を決めてそこに追いつこうとやってました。あと、僕はあまり貢献できませんでしたが、京大が世界3位に入ってうれしいです。次は僕も貢献する側に回れるように、ヒューリスティックも精進してSpring Challengeに備えたいです(3月は忙しいので参加しないかもしれませんが......)。