2019OBT
https://tenka1.klab.jp/2019-obt/
IREX2019に行く前に豊洲で参加した。CodeRunner以来だったのでとても楽しかった。
2020
時間 | コメント |
---|---|
-2:00 | 特に理由もないが、過去プログラムをpractice sessionに流したりしてた。非公開リポジトリに新しいトークンを書き込むためってのはある。 |
-1:00 | 非公開リポジトリ(のcoderunnerディレクトリ)の整理とかやってた。 |
0:00 | 今回もPythonのサンプルコードをいじりましょうかね。 |
0:05 | とりあえず全マス取得するコードを作って裏で回し始める |
0:30 | 1x1〜5x5の領域で一番点数が高いものを取るが、どうにも点数が伸びない |
1:40 | ミスが判明。同じ領域を何度も取得してしまっていた。取得する領域が重ならないようにサンプルコードのループを活用するようにした(領域を取得するたびに現在状況を取得するようにした)。 |
2:10 | 誤読。(私の方針では)一度取った領域の上下左右のマスは取ってはいけないことが判明した。my_claimマスだけでなく上下左右にmy_claimがあったら価値を0にするようにした。 この時点で方針の8割は固まった(大体55秒前後で取得したいマスは取得し終わるようになった)。 |
2:20 | 順位を上げ始めた。この時点で40位ぐらい。 |
2:30 | 点数が高い領域を計算する際、そのマスを取得した人数を考慮するようにした(num_factor) |
2:45 | 点数を比較する際、同様な点数ならサイズが小さいものを拾うようにした(でもうまくいかなかったのでやめた) |
3:00 | 23位ぐらいをうろつく。ぎりぎり賞金圏外かな。。 |
3:05 | num_factorは他の参加者が強くなると下げないといけないので、微調整。 |
3:10 | それにしても順位の入れ替わりが激しいなぁ。さっき圏内だった人が落ちとるよ。。 |
3:15 | num_factorの評価が誤っていた(value/(num_claimnum_factor+1)とするべきところを(value/((num_claim+1)num_factor)としていた)。最後の60分は走らせるだけにすべきなのにそこで修正かい–; |
3:45 | ポケモンGOのレイドをやりに外出(今考えるとCodeRunner系では功を奏しうる選択だったと思う) |
3:55 | 帰宅。なんと20位に浮上。このまま逃げ切ってくれ。。 |
4:00 | 20位キープ。賞金!! |
感想
- 実は1ゲームごとの順位で20位に入れたほうが少ないんですが、総合的にはコンスタントに点数を取るほうが大事だったのかもしれない。
- いきなりコードを動かすなというのがこれ系のコンテストの定石だが、今回21位との点差が14万点だったこともあり、やはり塵も積もれば山となることを痛感した。ただ、CodeRunnerと違って、1ゲームごとにステートが独立だからってのはあるかもしれない。
- BCU30 2018が最後の賞金をとりうるコンテストだと思っていたが、A問題で時間を食ってしまい5位となり、賞金を逃してしまった(3位まで賞金)。もう賞金はもらえないだろうと思っていたが、今回思いがけず賞金を得られることとなり、本当にありがたいです。
- プログラミングコンテストで賞金を得られたのは初だったので、今までプログラミングを続けてきてよかったなという気持ちです。
- 正確にはキャリフルのCodeSCOREで賞金もらってるんですが、あれは実務知識…とは名ばかりのぐぐらびりてぃコンテストでしたからね。(CodeIQの方が懇親会にていわく、あれはβ版で本バージョンは試験時間が大幅に短くなったらしい)
- OBTは「始点から終点までの辺の最大流」であり、始点から終点までつながなければ点数は一切入らなかったが、今回は「領域の連結成分」であるので、領域を取得さえすれば点数が入るようになったのはよかった。
- (領域)取得完了できる時間が十分短い場合は待ってからokを返す仕様はありがたかった。CodeRunnerはリトライの時間調整に苦慮するところがあったので。
- 長方形を取得できるようになればもう少し点を伸ばせたかもしれないが、取得自体が正方形しかできない以上、長方形を取得するには正方形に分割して複数回取得を繰り返さねばならず、分割が面倒だったので実装しなかった。
答案
coderunner系は https://github.com/cielavenir/coderunner に格納されます(今後もその予定)
最後に
本当にありがとうございました!