Syntax Error.

[Sy] Topcoder SRM に初参加してハマったこと&感想

2017/09/28

登録から2年くらいたってしまいましたが、ようやく TopcoderSRM(Single Round Match) に初参加してきました!同じように参加したい人向けにハマったことと感想をメモしておきます。

Topcoderとは?

世界中のプログラマが参加する、プログラミングコンテスト の一つです。賞金が出てものもあったり、クラウドソーシングみたいなこともやっているようです。単に「Topcoder」と言った場合は、今回ぼくが参加したSRMを指すようですね。

SRMとは?

Topcoderが開催しているプログラミングコンテストの種目の一つで、定期的に行われいて拘束時間は計2時間くらいなので気軽に参加できます。

ポイントとしてはこんな感じです。

  • 世界中のプログラマが参加している。
  • 結果次第で、Topcoder内でプログラマのレベルを示す指標となる、 Rating が上がったり下がったりする。
  • サイトや問題はすべて英語。
  • 4つのフェーズに分かれている。
    1. 登録:開始3時間前〜5分前まで
    2. コーディング:75分。難易度の異なる3つの問題を好きな順番で解いていく。
    3. チャレンジ:15分。他の挑戦者のコードを見て、正しい結果を出せなさそうなインプットデータを送り、バグを暴く。
    4. システムテスト:Topcoderのシステムによる自動テスト。参加者は待っているだけ。
  • 数人で一つのroomに入れられる。
  • Divisionが2つに分かれていて、問題とroomが変わる。(1200以上はDivision One, 1200未満はDivision Two)
  • 使える言語は C++, C#, Java, VB, Python2 。

    Rating

Rating は以下のようになっています。

  • Target : 3000〜
  • Red : 2200〜2999
  • Yellow : 1500〜2199
  • Blue : 1200〜1499
  • Green : 900〜1199
  • Gray : 0〜899
  • White : Ratingなし

ハマったこと

アカウント作成は2年くらい前にしてしまったので、覚えてないです・・・

その後にぼくがハマったのは、こういうところでした。

どこから参加したらよいのかわからない!

Topcoderというものの全体像がどうもわかりづらく、SRMに参加したいんだけどどうしたら良いの?となりました。

参加するまでの流れはこのようになります。ちょっと複雑過ぎたので、まだきれいにまとめきれてないですが。。。

  1. Javaをインストールしておく。
  2. Topcoder | Deliver Faster through Crowdsourcing からログインする。(「COMMUNITY LOG IN」の方をクリック)
  3. ヘッダーの「LEARN」にある「COMPETITIVE PROGRAMMING」をクリック。 ContestAppletProd.jnlpというファイルがダウンロードされる。
  4. ContestAppletProd.jnlp をクリックしてアプレットを起動する。
  5. Competition Arena が起動するので、ログインする。
  6. ヘッダーの「Active Contests」から「Single Round Match xxx - Round1」(xxxは開催回数)を選び、「register」をクリックすると登録完了。
  7. 時間になったら、6と同じ階層にある「Enter」でroomに入る。
  8. 問題を選んでコーディング!

特にアプレットを起動するまでが環境によってハマる人も多いのではと思います。こちらの動画が参考になりました。(超長いですが、最初の登録までの部分を見ると良いと思います)

⇒ Algorithm Workshop - 5 Weeks to Learn Topcoder - YouTube

「今時アプレット??」と思われる人も多いかと思います。実はWeb版もあるのですが、β版となっており、動画の中でもアプレット使ってと言ってるので、素直に従いました。 (というかWeb版はどこからコーディングできるか結局わからなかったです)

チャレンジのやり方がわからない!

コーディングフェーズが終わり、数分の休憩のあと、他の参加者のコードをテストしてバグを暴く チャレンジ フェーズに移ります。

とりあえず他の人のコード見たいと思ったんですが、すごくわかりづらい・・・ググって調べました。

やり方は、

  1. roomにある Summary というボタンをクリック。
  2. room内のメンバーのスコアが表示されるので、 見たい人の各問題の点数部分をクリック
  3. コードが表示されるので、バグがありそうなら入力データを設定してチャレンジする。

という流れになります。2の点数部分をクリックするというのがなんともわかりづらいUIです・・・

今回ハマったのはこの2点でした。コーディング自体は特に問題なくできました。

結果と感想

色々とコーディング以外で苦労しましたが、全体的に楽しめました!

インドの参加者が多かったように思います。

なんとか2問解いたのですが、2問目は他の人にバグを見つけられて点数になりませんでした。

結果は1問正解で Rating は 1083(Green) になりました。言語は最近勉強中なのでPythonを選択。

んー、初参加なので思っていたよりかは順調にいけたとは思いますが、もうちょっとどうにかなったなーという印象。

1問目ちょっと工夫して誤差が少なくなるようにしたんですが、余計でした。もっとささっと1問目は片付けて、2問目でじっくり時間かけると良かったです。

次回は Blue を目指します!

Topcoder以外にも、活発なプロコンがいくつかあるみたいなのでそちらにも手を出してみようかと思ってます。

関連記事