RECRUIT 日本橋ハーフマラソン2021〜増刊号〜

488人中278位で、最終得点は31072693点だった。(システムテスト前)

モチベーション

アルゴが伸び悩んできて、精進もそんなに進んでいないなか、ヒューリスティックに逃避する事にした。

最近コードをそんなに書いていなかったので、何かやりたいな〜と思ったのもある。

コロナウイルスのワクチンを打って副反応で寝込んでいたので、2日目から参加した。

やったこと

使用言語をRustに決めたので、とりあえず公式のサンプルコードをRustに翻訳して提出する。とりあえず正の得点を獲得した。

いろいろ構造体を作った後、お金が貯まったらすぐに収穫機を購入して、その時最も価値が高い野菜の場所に設置するように変更した。299,982点

収穫機を動かさないで棒立ちの状態だったので、収穫機をランダムに選んで、その時最も価値が高い野菜の場所に移動させるように変更する。3,380,016点

得点を計算する時、連結している収穫機を考慮していなかった(問題文はちゃんと読みましょう)ので、考慮するようにして得点計算が正確になった。4,503,238点

何日後に最も価値が高い野菜を調べて、そこに収穫機を集結させて得点を稼ぐようにしてみる。5,697,400点

必要以上に収穫機を購入してお金がすぐに無くなってしまうので、収穫機の個数に制限を設けてみる。15,101,042点(後でGitの差分を見て確認する)

目標の野菜を収穫した後に、次の野菜への着手が遅れるのを修正したり、野菜の選び方を変えたりする 19,245,683点

収穫機の個数を増やす。思ったより点がのび太。23,769,959点

収穫機の移動先を幅優先探索で作っていたので、不自然な置き方をしていた。収穫期の塊のすぐ隣に生えている野菜のうち、最も価値が大きい野菜の上に収穫機を設置するように変更した。ここでコードが10000Byteを超える。31,072,693点 元気があったらpng画像に変える

f:id:hotate29:20210911044001j:plain
周辺の野菜を考慮しないで収穫機を設置するので、すぐ隣に野菜があっても収穫機を設置しに行かない。

感想

かなり楽しかった。

上位陣のツイートを見ると、櫛のように収穫機を設置して野菜を収穫する解法が良かったらしい。確かにそうだなと思いつつ、上位陣はすごいなとも思った。

配布物のREADMEがMarkdownで書かれていたら嬉しかったかも。