SmartNewsの荒巻です。入社したばかりですが、社内の勉強会「SmaTech」で競技プログラミングの楽しさを紹介しました。 このブログの他のトピックは実用的なものばかりですが、息抜きとしてご覧いただければ幸いです。

競技プログラミングとは

お題が与えられるので、規定時間内にプログラムを書いて、結果を競います。 様々な形式がありますが、1~2時間の短時間のものと、数日間開催されるいわゆる「マラソン形式」のものが典型的です。

短時間のコンテスト

短時間のコンテストを開催しているオンラインサービスとしてはAtCoderCodeforcesTopcoder SRMなどがあります。個人で参加するものが多いですが、学生向けのACM-ICPCなどチーム戦のものもあります。 「1からNまでの整数の和を求めよ」のような、正解かどうかが明確な問題が出題されます。

マラソン形式のコンテスト

Topcoder Marathon Matchや、Kaggle(最近Googleが買収して話題になりました)が開催している長時間のコンテストは、マラソン形式と呼ばれています。 こちらは、ゲームの盤面や画像などのデータセットと、目的が与えられます。手数の少なさや、分類精度の高さなど、より良い答えを出した人が勝者になります。

問題例

競技プログラミングの出題例として、【ドワンゴ×チームラボ】競技プログラミング勉強会の田山氏のスライドを紹介したいと思います。

「1からNまでの整数の和を求めよ」という問題です。自然数の和の公式が思い浮かんだかもしれません。それを踏まえて、田山氏のスライドをご覧になってみてください。どうでしょう、正解でしたか?

関連する話題

競技プログラミングならではの面白トピックとして、tomerun氏の「すごいサブミット」もご紹介したいと思います。 出力例から問題を推察して回答するプログラムなど、知性の無駄遣い度合いが素晴らしいです。

こちらを紹介したところ、「そういえば森さんドラゴン曲線Quineを書いてTRICK 2015で入賞した」という話題で社内のSlackが盛り上がりました。

参加してみたい方へ

ちょうど今週末に、Google Code Jamという、一年に一度Google社が主催するプログラミングコンテストがあります。世界中で二万人以上が参加する大規模なコンテストです。通常は自力で問題を解く必要がありますが、予選だけは特例で、みんなで教えあっても大丈夫です。お誘いあわせの上、参加してみてはいかがでしょうか。 ふだん使っていない言語を試してみるのもいいかもしれません。昨年は23種類の言語を使って提出した方もいました。

また、AtCoder社は、日本語でコンテストを開催しています。やさしいものから難しいものまで参加者のレベルに応じたコンテストが定期的に開催されていますので、こちらもお勧めです。

その他

SmartNewsでは機械学習だけでなく、さまざまな技術トピックを楽しめる仲間を熱烈募集しています。

こちらもぜひお読みいただければ幸いです → SmartNewsの募集一覧