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

はじめに

今回初めてAtCoderヒューリスティックコンテストに参加しました。
ほぼ日記なので解法とかの話はほぼないです すみません

問題

atcoder.jp

結果(pretest時点) f:id:socha77:20210912185821p:plain

f:id:socha77:20210912185839p:plain

実装

github.com

振り返り

〇 参加する
〇 シミュレータを書く
〇 正の得点を得る
==== 参加前目標ライン ====
〇 もうちょっとスコアを上げる
× 連結数を考慮する
× 未来の盤面を用いて行動を決める
× 乱択や山登り、焼きなましのような手法を採用する
× 高速化やad-hocな改善を加える
? 感想戦を楽しむ

思ったことなど

だいたい時系列順で乱雑に失礼します

土曜日夕方

どうせあまり戦えなさそうだし元々あまり出るつもりはなかったのですが急に思い立って参加登録

せめて問題を見たり実装や考察を少しでもしておけばTwitterで言われている考察の意味とかが分かって次に生かせるかな~と思っていました(今後のための記念参加的な感じ)

目標としては準備などを整えて提出を無事終えるところまでいけばOKと考えていました

21:00ごろ

ルールをもとに農場のシミュレータを書き始めました

去年Codingameのコンテストに出たときに学んだのですが、
適当に書くと原因の切り離しができないバグを埋め込んでしまい大変なことになるので丁寧に書くようにしました

残り時間や経験値的にどうせスコア勝負はできないと思っていたのと、最近もうちょっと丁寧に実装ができるようになりたいなあと思っていたので意識的にはわりとここがメインでした

03:00ごろ

シミュレータが完成してサンプルの入出力と合致するような動作をするようになる
一安心です

ところで、Discordで通話しながら作業していたところ急に知人がSteamで拾ってきたゲームの配信を始めたせいでしばらく作業の進捗がなくなってしまいました

store.steampowered.com

05:00ごろ

ソルバのほうを書くために公式の配布物をDL
するとそもそも配布物の中にPython製のシミュレータが含まれていることに気づく(泣く)

ただ実装方針は間違ってないと確認できたのと、個人的に入れておいたバリデータのおかげでこの後の作業がスムーズだったりしたのであまり後悔している感じではなかったです

06:00ごろ

一回目の提出 → AC

その後の提出の流れは

  • 1個の収穫機を毎ターン野菜の生えている適当な場所に移動させる (スコア6桁)

  • 収穫期の移動先を現時点で一番価値の高い野菜の場所にする (スコア7桁)

  • 序盤に適当に収穫機をn個買っておくようにする nの値を20~40くらいで全部試し一番スコアの良かった操作列を出力 (スコア8桁)

という感じでした

全体を通して大きなバグはなく、シミュレータに時間をかけた分上手く動いてよかった~と思いました

感想

とりあえず問題を触ってみることができたので、これから他の人の方針など見ていこうと思っています

少し見た感じ、別に焼きなまし法とかは必須項目ではないのかなと思ったり
今まで感じていたハードルの高さが緩和されたのでそれだけでも参加してよかったかなという気がしています

次のコンテストも時間があれば出たいですね〜
それではここまで読んでいただきありがとうございました。