Showing posts with label 程式競賽. Show all posts
Showing posts with label 程式競賽. Show all posts

May 2, 2009

TopCoder 的演算法比賽

前陣子註冊了 TopCoder,這個網站提供了許多類型的程式設計競賽,其中有一個競賽項目是 Algorithm ,跟 ACM ICPC 很類似,要求參賽者在 75 分鐘之內解出三道題目。

這三題的難度是漸進的,第一題會讓你覺得寫 code 比看題目還簡單,第二題稍微想一下可以知道解法,不過要想到精簡的解法卻沒那麼容易,第三題會讓你覺得這不可能在時間之內寫完吧!?
一般說來最簡單的題目值 250 分,中等的值 500 分,最難的值 1000 分。參賽者的得分會隨著解題時間增加而遞減,所以每題的實際得分會比上述的還低。這種給分數的設定相當"老少咸宜,適合初學者到高手共聚一堂。

網路上的程式競賽很多,但是
TopCoder 和我看過其他的競賽有三個主要的不同之處:

  1. 採用積分排名系統 (ranking)。每隔一至兩週會舉辦一次即時競賽,讓每位參加者同時解題,以每個人的得分來加減排名。
  2. 挑戰模式 (challenge)。參賽者每20人分到一個房間,當解題時間結束以後,每個人有一小段時間可以看到別人的解答,如果你認為她的解法有錯,可以提出測試資料來挑戰,成功"反證"別人的程式是錯誤的話,就可以賺得一定分數,當然答錯了也會扣分。
  3. 程式觀摩。比賽過後,所有人的程式碼都會公開,可以學習到別人的解題技巧。
難度

參加了幾輪線上比賽之後,發現自己生疏了許多。最簡單的題目也花了約20分鐘才完成,主要是因為自己寫的 code 和心裡想的都不一樣XD,所以寫個 20~50 行的程式也要 debug 一下。另外一個原因是看題目花太久時間,花5分鐘看完題目的時候,就有強者已經寫完了。

看起來這是高中生和大學生準備程式競賽的好地方,不過年紀在這之上的人也是有的,不曉得他們參加的理由是啥。台灣參加演算法競賽的人只有 13 個,還真意外的少,這可能是因為比賽的時間不是在早上,就是在深夜,不過就另一方面來說,大學生應該很能適應這些時段:p