忍者ブログ
"Idle Talking About My Interesting things"
[9] [8] [7] [6] [5] [4] [3] [2] [1]




×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Top Coder
--http://www.topcoder.com/

「top coder」とは…
TopCoder社が主催する競技プログラミングコンテスの総称である。
「Single Ro
und Match(SRM)」「Marathon Match」「Bug Race」等の種目からなり、現在世界で最も勢いのある競技プログラミングコンテストの一つである。
TopCoderの各種目に参加すると自分の
プログラミングの腕前を表すレーティングと呼ばれる数値が付けられる。特に一定以上のレーティングを持ち、名前が赤で表示されている人物は「レッドコーダー」と呼ばれており、他の参加者から尊敬の眼差しで見られている。なお、日本人でレッドコーダーの称号を持っている人物は10人程度しか存在しない。

(出展:http://dic.nicovideo.jp/a/topcoder)




最近、上記のサイトに足繁く通い、よく遊んでいる。(遊んでいる?…うん、遊んでいる)
How to SRMのについて簡単に説明すると…
1、コーディングフェイズ(75分)
制限時間内に、課題として与えられた条件を満たすプログラムをコーディングし、動くものを提出しなければならない(使用可能言語 C++,Java,C#,VB)。タスクは3つ(それぞれ難しさが違う)与えられ、難しいものほど、また早く提出するほど高得点となる。制限時間内であれ ば、幾つ解いても構わない。
コーディングタイムが終わると、10分間の休憩に入る。
2、チャレンジングフェイズ(15分)
ここでは他人が書いたコードが読める。それらを読んで「あれ?」というコードを見つけたら、誤作動を起こしそうなパラメータをかませて みる。そこでもし正規の結果が返ってこなければ、チャレンジ成功なのでボーナスポイントをゲットできる。しかしそのプログラムが正しい出力を返した場合 は、チャレンジした側がペナルティとしてポイントを失ってしまう。
3、システムテスト(不定)
システム管理側が提出されたプログラム(当然、チャレンジングフェイズで撃墜されていないもの)をチェックする。ここでプログラムが通れば、晴れて正式にポイントゲットとなる。

(…ある対象について、客観的に順序だてて説明を加えていくのって意外と難しい。。。)


そして以下からは僕の主観に基づいた文章である。
1、コーディングについて
Division 2のタスクは基本的なアルゴリズムを問う問題ばかりであるので、それらについてきちんと理解してさえいれば解けないことは無いと思う。問題点を挙げるとすれば…
・説明文が全て英語だ…orz
・(上記とも関係しているが)時間との勝負だ
・いきなりコードを書き始めるとドツボに嵌まる
まず英語についてだが、これは数をこなしていけば慣れる。過去問が練習問題として用意されているので端から解いていくのが吉。
また、設計無しにいきなりコードを書き始めるのは全く時間の節約にならないというのは間違いなく常に意識しておくべき事実だ。なぜならコーダーとは得てし て自分が書いたコードに固執する生き物であり、設計無しで書いたコードというのはバグの温床だからだ(どうしても設計が時間の無駄にしか思えない、という 人には『Joel on Software(written by Joel.P)』を一読することを勧める)。
(※Division1について:このカテゴリーのタスクの殆どが全走査のアルゴリズムを作るとタイムアウトする仕様になっている(プログラムの実行時間 に2sという制限がある)。僕はこれまでオーダーについてそれほど気に掛けていなかったので、ここでは非常に戸惑った。しかしこの手の縛りというのは実際 的に言って非常に重要な概念であることは間違いない。この機会に是非とも常に最小のオーダーのアルゴリズムを構築する習慣を身に付ようと思う)
2、チャレンジングについて
不思議なことに、いくら自分が上手くコードを書けたとしても、他人のコードをすらすら読めるとは限らない。それらは全く別の能力である。
しかし、もし貴方が何かとても壮大な素晴らしいプログラムを創ろうと思ったら、絶対に他人のコードを読む能力が必要になる。何故なら人一人が管理・理解で きるコードは有限だが、他人の書いたコードを使えばその限りでなく、また貴方は貴方のパートナーが書いたコードを原則として理解する必要があるのだけど、 5分おきにパートナーにコードに関する質問をして彼の集中を切らすというのはどう考えても能率がいいとは言えないからである。(プログラミングに関する文 章を書くと、どうしてもJoel(の訳者)的な筆致になってしまうなぁ)
なので、自分にボーナスポイントという形でインセンティブのつく「チャレンジ」というシステムは良いプログラマーを育てるために素晴らしい効果を齎すと思う。だから、どんどんチャレンジしよう!!

最後に、以下のアドレスに自身の書いたコードを公開しているのだが、そこにいくつかSRMのタスクを行なったものも混じっている(言語はJava)。よければ参考に。
---http://hamhei.bakufu.org/
PR

コメント


コメントフォーム
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字


トラックバック
この記事にトラックバックする:


忍者ブログ [PR]
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
フリーエリア
最新CM
[12/07 柿崎]
[06/18 sick]
[04/25 あーうー]
[03/16 marybellha]
[03/16 derrillhor]
最新TB
プロフィール
HN:
Hamhei HORIUCHI
HP:
性別:
男性
職業:
Researcher
趣味:
Reading, Coding, Thinking, Singing, & Football
自己紹介:
貴方が本を読み続ける限り、貴方は取るに足りない紙屑の存在に幻滅し続けるだろう。
Blogもそれと同じで、その殆どは読んだ人間に対して何も学ばせることの無い、全く意味を為さない落書きみたいな内容だ.

一方,文章を書くという行為は、主体に対して幾許かの成長を約束する.退化はあり得ない.
その一例として、物事を体系化する手順を学習することができたり,自己理解が促進されたり,さらには新鮮な驚きと発見が内から魔法のように引き出されることもある.

最後に、我々の価値観が互いを許容でき,かつ刺激し合う程度に『違って』いますように.
バーコード
ブログ内検索
P R
カウンター
忍者アド
アクセス解析
アクセス解析