簡介

TopCoder 是一個提供線上程式競賽的網站,類似 ACM 的競賽,提供演算法題目的比賽和練習之外,還有其他的軟體設計的項目,如果獲得前幾名的話還可以拿到獎金。

可以到官網點擊右上 [SIGN UP] 註冊,之後可以在這邊參加各種類型的競賽。

其中的演算法類型提供了線上編寫程式送出的功能,可以從畫面左上角的 O(n) 的圖示進入,其他圖示表示不同類型的競賽
TopCoder

點擊 O(n) 之後,他會開啟 Java 程式,登入後可以選擇進入練功房寫以前競賽的題目來練習,或者是參加目前進行中的競賽。
TopCoder

進入練功房之後,可以開啟題目來練習,一個競賽有三道題目,依據難度分別是 250、500 和 1000 分的題目。
練功房

開啟之後會進入撰寫程式畫面,TopCoder 目前支援 Java、C++、C# 和 VB 四種語言。程式寫到一半要離開的話,可以使用 Save,若寫完則可以 Compile,若要自己輸入資料測試則使用 Test,確認一切正確之後則可以 Submit 出去,題目越快完成交出去分數會越高,從題目被開啟後就開始計時,另外重新 Submit 的話還會額外的扣分,無論如何,完成至少可得到 30% 的分數。
TopCoder

寫完程式後也可以透過 Practice Options 下的 Run System Test 來用系統內的一些 Test Case 來測試你的程式。
Run System Test

在練功房中還可以按 Summary 看大家的狀態、分數和程式碼。分數的顏色表示使用的語言,可以從個人設定去改,點擊分數兩下可以打開看該使用者所寫的程式,其中有一種狀態 Challenge Succeeded 表示有人 Challenge 他的程式,並成功找出問題。
Summary

開啟別人的程式之後最有趣的地方就是可以 Challenge 對方,找出可能出錯的地方,並送出會造成錯誤的 Input,如果成功的話就可以得到 50 分,如果失敗的話會倒扣 25 分。
Challenge

我比較擅長使用 C# 寫,不過可惜線上的 C# .Net 版本是 2.0,用 VS2010 開啟的專案還要先降成 .Net 2.0,像 LINQ 之類很多好用的功能也不能用,另外上傳的時候要把 Namespace 拿掉編譯才會通過。

延伸閱讀

以下列出目前有實作的題目提供參考: