Kotlin Heroesに挑戦してみた
Kotlinを使ったプログラミングコンテストに参加した。たまたまTwitterで流れてきたのを見て、たまたま時間が空いてたので挑戦してみた。
https://codeforces.com/contests
腕試しになるかなぁという程度の軽い気持ちでの挑戦であったが、「俺ってまったくできないじゃん」と凹む結果に終わってしまった。 そんなに深刻になるレベルではないけれど、それなりにできるんじゃないかという妙な自身は見事に砕かれた。 もっと地道に精進しようと反省である。
https://codeforces.com/contest/1171
本線前に練習問題をやってみた。6問中5問解くことができて、これなら本線もある程度できるかなぁなんて思ってた。
ちなみに6問目は結局わからずじまいである。なんか悔しいので時間を見繕って挑戦してみようとは思っている。 問題文が何言っているかを理解するまでにものすごく時間がかかって、設定は理解したけどうまい解放ができないなあというところで止まっている。
しかし私にとってはやはり英語がネックで、問題文を理解するのがとても大変である。 このあたりは今回のコンテストに限らず、LeetCodeをやってるときも思う。 英文読んでサンプルのInput/Outputを見て、さらに英文を読み返して・・・というのを繰り返してようやく「こういうことかな?」となんとなく理解するという感じである。 とにかく時間がかかって仕方がない。
時間がかかる上にやはり細かい制約を読み飛ばしてしまっていることも多く、テストケースでこけて改めて確認し直すことが多い。 テストケースでこけると、私の回答に問題があるのか、それとも問題文の理解に原因があるのか分からずまた時間を食ってしまう。
半端な状態でとりかかるなよと思われるかもしれない。 しかしながら、いくら時間を書けても英語の理解が中途半端になってしまうので、ある程度問題設定を理解したと思ったら手を動かしたほうが早いのだ。 さすがにまったく意味わからんという状態では手を動かさないので、ある程度理解した上で挑戦している。 それでもテストケースにはじかれたとき、問題文から読み落としがあるのではないかと確認に戻る手間ができてしまう。
このあたりの手間は、別に練習問題を解く上では問題とならなかった。 しかし、これが実際のコンテストとなると全然違った。
https://codeforces.com/contest/1170
4599人がエントリして、実際にコンテストに参加したのが・・・どこ見たら確認できるのかわからないが大体1400くらいだったかな、それで私は590位だった。 590位といっても、Acceptされたのは最初の1問だけで、あとはまったく解けていない。
挑戦するだけはしたが、どれもどこかのテストケースがクリアできないという状態で終わった。 2〜4問目も挑戦したんだけどね・・・。
実のところ時間制限のあるコンテストに参加するのはこれがはじめてであった。 時間に追われると無駄に焦ってしまう。 時間がない→英文わかんねぇ→ああもう、たぶんこういうことだからとりあえずやろう→はいダメー→慌てるというループであった。
当たり前だが、どういったテストケースで失敗しているのかは開示されない。 だからどんなエッジケースで落ちているのかは自分で推測するしかない。 自分の解法ではカバーできていないところを、自分で考えないといけない。 私の場合はそれに付け加えて、問題文の理解を怪しまなければならず、余計に焦ってしまった。
こういうとき、昔やった公認会計士試験を思い出す。 あれも制限時間内にすべてできるような問題料ではないので、まずは解けそうな問題から手を付けるのが大事だった。 でも英語でそんな問題文の切り分けを短時間でできるほどの英語力が私にはない。
ついでにコンテストの時間が深夜帯であったのもちょっとつらかった。 単なる言い訳でしかないが「俺は深夜に英語とにらめっこしながら何してるんだ・・・」と、やや眠い頭でほうけた瞬間がなかったとは言わない。 4000からのエントリーがあるにもかかわらず、実際参加している人は少ないのは、やはり時間の影響もあるのかもしれない。 まあしょうがないことだけどね。
完走できてないけど。とりあえず制限時間いっぱい挑戦してみての感想。
自分の実力不足を痛感する二時間半だった。
英語もアルゴリズムも数学も、いろいろと足りてない。やりたいこともやらなきゃいけないことも山ほどある。 ただ焦っても仕方がないので、できるところから着実にやっていくしかない。 まあ今回は挑戦した自分を褒めてあげようと思う。 凹んでも仕方がないしね。