まーぼうの書きたいことをたらたらと

研究したりゲームしたり作ったりの日記

競プロ始めました

お久しぶりです。まーぼうです。大学院始まってから、生活のペースを作るのに慣れるのに苦戦したのか、なかなかブログが書けなかったので1.5ヶ月ぶりくらいです。徐々にペースを1~2週に1記事に戻していきたいですね……

今日は、最近始めた「競技プログラミング」というものについて書きたいと思います。

競技プログラミングって何?

自分の中では、出された課題を速く解くコードを時間内に書き上げるコンテスト、という感じに考えています……が、これが正しいのか自身が無いので、ちょいと調べてみました。

persol-tech-s.co.jp

――ちなみに、競技プログラミングってどういうものなのでしょうか?

高橋:競技プログラミングは、「〇〇を実現するコードを書いてください」という課題がいくつか与えられます。時間内にその課題に対して適切な処理を行うプログラムを組んで提出し、その正確さや速さを競うものです。

だそうです。ちなみに、この記事でインタビューしている高橋さんが取締役をしているAtCoder社が運営している「AtCoder Beginner Contest」に参加してみました。

(2018/05/28追記) 直大さんが説明用の記事書いてました。

chokudai.hatenablog.com

競技プログラミングって役に立つの?

よく分からないです。これについては、去年あたりに友人が競プロ(競技プログラミングの略称です)の布教をしていたスライドが参考になると思います。

季刊 競技プログラミングは役に立たない

自分にとっての参加の動機は

  • 今の学科だとソースコードを書く課題が無いので、ちゃちゃっとソースコードを書く機会が欲しかった(大学院では情報系ではなくなりました)
  • ゲーム作る際は、1つの長いコードを書くので、ソースコードの書き方とか実装の仕方について「振り返り→改善」をするのが難しいのでそういう機会を作りたかった
    • これに関連して、教育系の修士研究の題材として役に立つかも知れないというのもある
  • 自分がどの程度プログラミングができるかを知りたかった
    • 能力の指標があると就活に役に立つかも
  • 何か新しいことがしたい

辺りです。短時間でソースコードを書く機会を頻繁に得る方法としては良い媒体じゃないかなと感じています。

2回コンテストに出てみた感想

競プロに慣れるために、AtCoder Beginner Contestに2回出てみました。成績はこんな感じでした。

f:id:mabo168general:20180527225356p:plain

参加してみた感想ですが、「楽しい」の一言につきます。普段すばやくソースコードを書いたり、問題の解き方を短時間で考えたりする機会が少ない(ゲームプログラミングの際は、通学途中で実装方法を考える事が多い)ので、競プロみたいなスピード勝負のプログラミングをするのは新鮮で楽しいです。自分はアルゴリズムについて詳しくないので、探索方法の検討とかは全然できませんが、ABC程度ならあまり必要なさげだと感じました。ここらへん深く勉強していくと、もっと楽しくなりそうですね。

また、短時間で参加コスト(金銭だけではなく、時間や精神的負担も)が低いので、「Cの基本の教本読んだけど、この後何すればいいの?」みたいな際にオススメという話はどこかで聞いた事があるんですが、そのとおりだなと感じました。手軽に参加できて、問題の解き方をソースコードに落とし込む練習教材として面白いなと感じました。書かないといけないソースコードの行数自体もB,C,D問題だと60行程度なので、問題の解く道筋を2,3分割する練習にもなる気がします。まあ、「○○が作りたくてプログラミングを勉強したんだ!」っていう人にはそこまで向いてない気がしますが。

今回の記事は以上です。ここまで読んでくださりありがとうございました。