競プロ

学校でパソコン同好会があり,僕はそのプログラミング部門で後輩に C/C++ を教えています。人にものを教えるというのは結構難しいんですね。

 

人にプログラミングを教えるにあたって最も苦労したのが「何を作ればいいのか分からない」ということ。

プログラムは書いた分だけ上手くなります。逆に言うと,自分で書かないと上達しません。

僕が小学生のときにプログラムが上達しなかったのも,作るべきものが特に無かったからです。

 

同好会でも,後輩たちはこれまで何をするともなく適当にコードを書いているだけでした。(ちなみに僕は自分が書いたバグだらけのコードを頑張って修正していました)

 

とにかく何かテーマが欲しい。何を作ればいいのかを提示して欲しい。

 

そんなとき僕が出会ったのが,競技プログラミングでした。

 

競技プログラミング。略して競プロ。

正しいプログラムをいかに早く書けるかを競う競技。

 

atcoder(https://atcoder.jp/) や codeforces(http://codeforces.com/)などのサイトで定期的にコンテストが開催されています。

例えば,「入力されたいくつかの数のうち,1が何個あるかを出力せよ」という問題が出たら,数を1つずつ読み込んで1の個数を数えるようなプログラムを書いて提出します。提出したら即座にジャッジ(正誤判定)が始まり,いくつかのテストケースが実行されます。プログラムが全て正しい出力をしたら「AC」(accepted),出力が間違っていたら「WA」(wrong answer),プログラムが重くて実行に時間がかかりすぎたら「TLE」(time limit exceeded)と表示されます。ACすると得点を得ます。

一回のコンテストでいくつかの問題が出題され,得点の合計を競います。

 

僕は今年1月に競プロを始め,その効果に驚きました。 

 

競プロは実用的なプログラミング力をつけるのに適しています。

自分の書きたいものを書くより,与えられた問題を解くほうが,すぐに力がつきます。

 

というわけで,今年度からは同好会で競プロをやることにしたのです。

 

 

競プロをやる人のことを「競プロer」と呼びます。僕は単に「er」*1と呼びます。

日本人のerは,twitter上にたくさんいます。(僕が競プロを知ったのもtwitterを始めてからです)

twitter上のerは不思議な日本語を使います。「プロ」「はい」「いいえ」「これは罠」「太陽」などの言葉の使い方や,括弧の使い方が特徴的です。

また,過度な謙遜による煽りが多い世界なので,強くなるまでは会話に参加することができません。

 

ここら辺の詳しいことに関しては,また改めて記事を書きたいと思います。

 

ではまた。

 

…というかこの記事,書き方が下手だな。誰だこれ書いたやつ。

*1:口を半開きにして,「あー」と発音します。