(雑談)競技プログラミングが面白い
今朝、ホッテントリで以下のエントリを読んだ。
自分は本職プログラマではないし特に転職とかも考えていないけど、プログラミングには割と長いこと趣味で触れてきていて、かつ頭の体操みたいなのも好きなので、以前からAtCoderには興味があった。そこで、なんとなく今日いくつか問題を解いてみたのだけど、これがなかなか面白い。
とりあえず、以下のQiita記事にある問題10本(=AtCoder Beginners Selection)と、直近のABC173のA~Cを解いた。
ABC173のC問題が一番難しかった。選択組み合わせ*1の総当りの実装方法が分からなくて、つい解説PDFを見てしまった*2。2進数で表現するというヒントを得て、しぶしぶPythonでの2進の論理演算方法を調べた。普通にCと同じ書き方ができて拍子抜けした。
リアルタイムのコンテストに参加しなくても、過去のコンテストページに行って「提出」タブを開けばコードをUploadできる。これなら制限時間とか関係なく、ただ頭の体操問題を自由奔放に解くゲームになるので、個人的にはありがたい。面白いのは「提出結果」タブから他人のコードを見れること。ABC173のC問題の解答を見てitertoolsなんていうモジュールがあることを知ったりして、各言語のいい感じのテクニックを学べるのがすごく良いと思う。こんなのが無料で使えるなんて、全人類が言葉を話すようにプログラミングしていても全然おかしくない時代だと思う。
今後も、気が向いた時にちょいちょい遊んでみようと思います。しばらくはC問題でおなかいっぱいになりそう。D問題は問題の言わんとすることが分かるかどうか微妙なラインで、実装方針が全然見えない。C問題に飽きてからで良さそう。