読者です 読者をやめる 読者になる 読者になる

CODE RUNNER 予選B

せっかく1位だったので参加記書きます。

最初10分で大体読みます。

1分ごとに5%減ということでgoogleに0.95 ** xのxを変えていろいろ突っ込んでみる。

どうやら減衰はかなり激しいが、max scoreなのでさっさと強力なAIを書いたら有利だなぁと思う、がこういうので強いAIというのがわからない。

1秒ごとに攻撃するプログラムを書くが、カス。

0.25秒ごとにinfoを読んで、自分の攻撃力, 自分の総和, 敵の情報だけを表示するプログラムを書いて眺める

とりあえず, 眺めて適当な戦略を突っ込む

まずは

  • 自分の攻撃力 * 1.1 > 先頭の敵の体力なら攻撃

これだけだと先頭が弱くて次に強力なのが待っていた時にオワコンするので以下

  • 攻撃力 * 1.2 < 先頭から2番目の敵の体力ならとにかく待機

さらに、先頭が強くて次が弱い時は他人が攻撃して弱いのが回ってきてオワコンするので以下

  • 攻撃力 > 先頭から2番目 && (残り二人の攻撃力の和) * 1.05 > 先頭の敵の体力 なら攻撃

1.1とか1.2とか1.05とかの微妙なパラメーターは、他人のちょっと先を取るということを意識した。具体的な数値は 1 + eps から適当に選んだ

とりあえずこの3つだけで回すが、案外勝てる

ここら辺でいい感じにゲーム木探索することを考えるが、難しい

そもそも1時間でかけるものなんてたかが知れてるので、どんどん戦略を追加していく方針に

myrankを見ると、どうやら1位を取るためには少なくとも60Mぐらいのポイントが必要っぽい。なので

  • 攻撃力が10M以下だったら必ず待機

という戦略を入れる。これはかなり勝率に関与した気がする。

これだけでガンガン勝てるようになった

ここら辺で1桁順位にはなっていたのだが、kyuriに勝てそうにないため、考える。

とりあえずここら辺で戦略かぶりが見られるようになった、戦略かぶりは本当に最悪で、誰も攻撃しなくなって1分間犠牲になる。

1分間犠牲になると、たとえ1位が取れても点数が下がるのでクソ、そもそも8割は勝てていたためさっさと放棄して次の試合に行ったほうがいい。なので

  • 20秒パワーが溜まったらアホモードに移行

という戦略を入れた。アホモードとは

  • 攻撃力 * 1 > 先頭の敵なら攻撃

という戦略のみで動くモード。とにかく最速で勝負を終わらせることだけ考えている。

また、

  • もし残りの敵を全部他人に取られても勝てるならアホモードに移行

という戦略を入れた、絶対に勝てるなら変な事をする必要はない。

これらでぶん回したら40000点を超えた。やったぜ

この後も回し続けるが、そもそも他人が強くなってしまいどうしようもないためどんどん点数は下がる。

当然40000点をもう一度とるのは不可能だけど何もせず点数が下がっていくのも寂しいので細かい戦略を追加していく。

運もあったがcurrent1位で終了できたので良かった。