競プロポエムです。
Codeforcesに参加しよう
日本人の競技プログラマがもっとCodeforcesに参加すると良いなと思っています。 見ている限りでは、Codeforcesにも参加してるのは上位勢がメインで、 AtCoderの緑や水色くらいの人の参加は目立ちません。
AtCoderとCodeforcesを比較すると、Codeforcesの方が正統派の問題が多く、 実装が重めなことが多いです。あとは時間制約が厳しいこともあります。 中級を目指す人が参加するDiv.2でもDやEくらいだと、ABC-D,E程度の基本的なアルゴリズムを組み合わせて 解くような問題も出て、いかに基礎に慣れ親しんでるかが問われます。 他のサイトでは、yukicoderは知らなかった高等な知識に出会える可能性が高い場所で、 LeetCodeはパズル問題はほぼなく、典型的なDPがほとんどです。
今の自分は、新しい知識を増やしつつ、基礎をしっかりとマスターする段階にあると思うので、 CodeforcesとLeetCodeとyukicoderをやっています。
Codeforcesは世界最大の競技プログラミングコンテストサイトなわけですが、 必ずしも完璧なサービスというわけではありません。 その理由は、Russian Englishです。
問題文が意味不明: Readforces
Codeforcesはロシアのサイトなので、ライターがロシア人であることがあります。 ライターは競技プログラミングについて有能であることは間違いないですが、英語まで有能とは限りません。 例えばAtCoder社長のchokudai氏が英語がダメなように、アンバランスな例というのは実際に存在します。
Codeforcesの問題文はこのため、英語としてぐだぐだになることがあります。 当然使われるべき単語が使われておらず、独自表現で書こうとするため何を言ってるのかわからないというのは日常茶飯事で、 場合によっては英文としてはっきり間違ってることもあります。 これはどういう意味なんだと考え始めると、問題を理解するのに疲れてしまいます。
英語がぐだぐだでも内容が伝わればまだよいのですが、 日本人のみなさんにもわかると思いますが、英語力がないと、 論理的に文章を書くことが難しくなることがあります。 文章の論理構造と言語は限りなく別物ではありますが、 言語力があまりに低いと、頭の中にある論理構造を文章にマッピングすることも難しくなるからです。 あとはロシア人の性格なのだと思いますが、多少間違っていたり粗があってもいいじゃんいいじゃんでゴリ押ししてくる ところもあり、そもそも推敲したり改善したりする気もないのだと感じます。 海外のゲームをしてロシア人の話す英語を聞いていると、 彼らは、独自の発音をしていることがあります。
Codeforcesにおいて、問題文が読みづらく、意味不明な場合、Readforcesと揶揄されます。 わけのわからない物語文のあとに"More formally"を発見すると安心します。
(Readforcesとは、ロシアのプログラミングコンテストCodeforcesの、英語が読みにくくてみんなが読めない回・問題のことを指します
— chokudai(高橋 直大)@AtCoder社長 (@chokudai) March 28, 2012
この場合、参加者はどうしてるかというと、対応は2つしかなくて、
- キレる
- サンプルからエスパーしたり、問題文を好意的に解釈してなんとかACする
のどちらかです。おれは1派で、上位陣はもれなく2派だと思います。
ちょうど昨日参加したコンテストでも、E問題は、英語が破綻してるだけでなく、 問題文の内容にも矛盾する箇所があって、(unratedではありましたが)ぶちきれてコメントしたところ +19のいいねがもらえました。同じく「なんじゃこりゃ」と思った人が多かったのだと思います。 日本からの参加者の中にも、Eが読みづらかったと言ってた人がいました。 読みづらいだけでなく、理解不能だというのが正しい表現だとは思いますが。
こういうコメントシステムはAtCoderにはないですが、 ユーザ同士の対話が出来るので有益だと思います。 ただその場合、日本語でやるとどうしてもドメスティック臭が漂ってしまうため、 微妙という見方も出来ますが。
このReadforcesについては、設立当時から全く改善していないようなので、 今後も改善されることはないでしょう。 もし、参加する場合はまず過去問を解いて、ある程度慣れてから参加することをオススメします。 ロシア人の名前や謎の地名が出てきたりと、最初はわけがわからないものです。
解説が意味不明
ほぼ当然の帰結として、解説も意味不明です。
解説は、問題文同様に英語も意味不明ですが、 そもそも考え方が汚かったり、 解答例として提示されているコードの可読性が低かったりして、 ほぼ常に最悪です。 解説が理解不能な場合、日本人のブログを探すことになるのですが、 上位勢にとっては記事を書くほどでもない場合もあり、 この場合は気合で解答例を読み解くか、諦めるかを迫られます。
解説のクオリティでいえば、AtCoderの方が100倍は良いでしょう。
しかしそれでもCodeforcesが世界一のコンテストサイトなのは、 やはり問題の質自体は良いというのと、コンテストの頻度が高いということが挙げられると思います。