程式解題系統使用手冊
* Online Judge 的運作原理
 

裁判系統會以數量不一的測試資料去測試您所送出的程式碼來判定您的程式是否完全正確,若通過所有的測試資料的測驗,則系統認定您的程式碼為通過,否則將會呈現不同原因的結果,如 NA, WA, TLE, MLE, OLE, CE, RE...等。因此必須在程式中放入一個 while 迴圈來讀取所有的測試資料。程式碼請參考 a001。

系統特色:
  • 可以告訴使用者錯誤答案發生在第幾行,方便除錯。
  • 使用者參與管理工作,使用者可利用系統出題目以及舉辦考試。
  • 可直接分享程式碼,以及站內簡訊進行討論。
  • 可預約競賽,時間一到即可自動開始,並自動結束,不需管理者操作。
  • 可在系統上進行開課,可成為一個開課平臺。
* 主要對象
  主要對象為程式語言初學者
* 錯誤訊息的意義
 

AC: Accept 即表示通過
NA: Not Accept 表示在多個測資點的情況下,有部分測資點無法通過
WA: Wrong Answer 表示答案錯誤, 請仔細比對,務必符合題目要求
TLE: Time Limit Exceed 表示執行超過時間限制
MLE: Memory Limit Exceed 表示程序超過記憶體限制
OLE: Output Limit Exceed 表示程序輸出超過限制
RE: Runtime Error 表示執行時錯誤,通常為記憶體配置錯誤 如:使用了超過陣列大小的位置
RF: Restricted Function 表示使用了被禁止使用的函式,並在錯誤訊息中指明使用了什麼不合法的函式。
CE: Compile Error 表示編譯錯誤
SE: System Error 包含 Compile, Runtime 等未定義的錯誤均屬於 System Error

由於本系統以初學者為導向,因此錯誤訊息儘可能提供最詳細的錯誤資訊,如 WA 訊息會告知您正確答案(題目測資已公開時),以及在第幾組資料時發生,讓使用者比較容易判斷錯誤發生在哪哩,而不會像在 ACM/UVa 裡明明做對了,但是就是有莫名的格式錯誤,卻找不出格式錯誤在哪的困境。

* 題目的進場/退場機制
 

本系統的特色之一是持 Open Source/WIKI 的概念,由廣大使用者共同參與共同成長的理念開放解題 30% 以上的使用者可以自行新增題目。這是 Online Judge 系統的創舉。但為了避免有問題的題目充斥,因此特別訂定“題目退場機制”。
凡符合以下事項 1 項含以上者,"站務管理員"保留將題目下架之權利。
* 題目內容易引發爭執者,如:宗教、政治議題、種族議題、歷史情結、文化衝突...等。
* 容易引發閱讀者不快者,如犯罪、色情、賭博、人身攻擊、影射...等不當文字。
* 題目敘述有誤或不完整、測資有誤,致使使用者無法作答者
* 進行廣告或置入性行銷者
* 與其它題目高度雷同或完全相同者
* 涉及著作人格權問題者,包含冒名投題、原作者提出異議並主張下架者...等
* 內含其它不當內容且遭致使用者投訴者

本辦法未盡周全之處,得經站務會議決議後修訂。

本辦法訂定時間 2009-05-08
(2009-07-06 第一次修訂)

*

使用者言論管理辦法

 

使用者違反下列規定時,站務志工可依情況輕重限制使用者之使用權限,處理原則如下:

違規定義及標準:

以下所稱“言論”包含匿稱、帳號、討論區文章、題目內容、簡訊...等任何在 ZeroJudge 內發布的文字或圖片等相關資訊

一、不當言論
1、違反中華民國現行法律法規
2、涉及宗教、政治議題、種族議題、歷史情結、文化衝突...等
3、涉及犯罪、色情、賭博、人身攻擊、影射、隱私...等不當文字
4、在討論版要求貼出完整程式碼或是測資的正確輸出者。

二、網路濫用、攻擊
以任何形式的網路技巧濫用或攻擊,使得使用者無法順利使用網站功能。

三、廣告
請勿在言論當中進行商業廣告或置入性行銷

本辦法未盡周全之處,得經站務會議決議後修訂。

本辦法訂定時間 2009-07-06

* 各項解題語言所使用的系統編譯器
 

目前連結的評分主機為:ZeroJudgeServer

評分主機資訊:

本系統目前支援的程式語言如下:

C: gcc -std=c11(gcc 5.4.0)
C解題範例


CPP: g++ -std=c++14(gcc 5.4.0)
CPP解題範例


JAVA: OpenJDK java version 1.8.0
JAVA解題範例


PASCAL: Free Pascal Compiler version 3.0.0
PASCAL解題範例


PYTHON: Python 3.5.2
PYTHON解題範例


* 使用者寫題目時建議使用的編輯器
  C/C++ 建議使用 Code::Blocks , 請在 google 鍵入 Code block 即可找到,這個軟體是免費下載。
另外,eclipse 亦可經由安裝 plug-in(CDT 及 MinGW) 開發 C++,惟安裝過程稍嫌繁複。
建議勿使用 Turbo C++ 以及 Microsoft Visual C++ 6.0 ,該系統的編譯器過於老舊且不符標準。
* 程式執行的速度的計算
  本系統對每個獲得 AC 的程式會一併顯示執行時間(以毫秒為單位),程式執行時間會隨系統當時負載而有的差異,使用者可以暫不需過於在意執行時間,只要在題目規定的時間內執行完畢即可。
* 多測資點的計分原則
 

* 任一題目均可以依照出題者意願設定成分段或不分段計分。出題者最多可分為 10 段計分,每一段均可依據困難度配分,總和為100分。
* 每一個點不必然只有一組測資,多測資點的題目仍然可以在每個測資中使用多組測資,因此仍然要以多組測資的方式讀入。

* penalty 的計算原則及目的
  penalty 是在程式競賽中評斷選手表現的一個指標(參考 NPSC),主要目的就是要了解選手解題速度及錯誤率。本系統的 penalty 規則為:當題目通過時即加上通過時的時間(以分鐘計),當送出的題目不通過,則 penalty 每一次再加 20 分鐘。在相同的正確題數下,penalty 越低排名越高。
* 統計數據說明
 

註冊人數:從 2006-06-08 開始統計的總註冊人數
解題人次:從 2006-06-08 開始統計解題總數
題目數:從 2006-06-05 開始統計目前開放可解的題目總數
登入人數:目前正登入系統的人數
登入人次:從 2007-08-07 開始統計的登入人次總數。
題目管理員:解題數達到門檻而取得“新增”,"編輯"題目權限的使用者人數。
教師:可以在系統內開設課程的人數。

* 小圖示所代表的意義
 

:代表目前程式碼是「上鎖」的狀態,按下此圖形就會解鎖。
:代表目前程式碼是「公開」的狀態,按下此圖形就會上鎖。
:代表將該程式碼進行重測,一般來說,只有在題目或測資有更動時,才需要重測。

* 解題過程中的疑難雜症
 

‧若使用 Microsoft Vistual C++ 6 很容易出現編譯錯誤,因為VC6 並未依循 ISO /ANSI C++ 98 的標準,比如 void main() 這類的寫法都能通過 VC6 但送上Judge 系統則會出現編譯錯誤。

* 畫面醜陋的原因
  由於 IE 6.x 對於 PNG 圖片的支援不佳,會使 PNG 透明圖失效,因而產生灰色的底圖,非常醜陋。雖然已經利用了一段特定 JavaScript 來專門處理 IE 的這個問題,但某些非典型 IE (IE 的行為不正常)仍會出現灰色底圖。解決方式為放棄 IE 瀏覽,本站較適合的瀏覽環境為 FireFox,或 Chrome。但請放心,除了畫面呈現稍有不同之外,功能方面絕不會有差異。
* 後記:關於 ZeroJudge
 

ZeroJudge 是一個 Online Judge 系統亦即線上解題系統,中文來說有許許多多不同的翻譯名詞,諸如:在線裁決系統、在線評判系統、在線提交系統...等等不一而足,建議還是直接稱呼 Online Judge 系統。主要是用來讓有意練習程式語言的人士(主要是學生),有一些題目可以練習,並且可以知道自己所寫的程式是不是正確。

目前世界上最著名的 Online Judge 便是大名鼎鼎的 UVa Online Judge System,沒聽過?那是因為大家都叫他 ACM。至於其中原因請參考 DJWS 所寫的『Online Judge System 起源與由來』。目前由西班牙 Valladolid (巴亞多利)大學(http://online-judge.uva.es/problemset/)所維護,目前已經有2000個題目,讓全世界的程式愛好者們想辦法去解決,這是全世界對寫程式有興趣的人一個練習的好地方。

然而,UVa(ACM)題目大多數都是需要用到許多演算法及程式技巧,對於中上程度的程式學習者具有很好的練習效果,但對於初學者,可就會覺得障礙連連,深受打擊了。

作者(Jiangsir)所服務學校(國立高雄師大附中)練習程式設計的學生也遭遇類似的情況,因此曾積極尋找備有初級題目的 Online Judge 系統(首先排除國外網站,因為語言障礙足以擊退絕大多數初學者),可惜無法如願,並且發現此時(2006)國內各大學尚未具備公開上線,可供練習的 Online Judge 系統。也曾嘗試考慮北京大學開發的(Peking JudgeOnline),但該系統並未開放原始碼許多功能無法動手修改。最後終於決定自行開發,於是 ZeroJudge 計畫誕生,代表從零開始。

94學年度首度運用在學生課堂程式考試上,該版本為手動驗證,由人工判斷程式是否正確,此時僅為一個線上測驗系統。
2006年中,改寫整個操作模式,使其朝向 Online Judge 架構發展,仍應用於程式考試上。
同年,完成自動裁判服務 (Judge Server),可判斷出 Accept, Wrong Answer, Time Limit Exceed, Runtime Error, Restricted Functions, Compile Error, System Error...等狀態,至此可算是一個初步堪用的 Online Judge 系統。
2007年初,公開上線供公眾練習使用,同時借此檢驗系統穩定度,並逐步發掘問題,逐步修正。
2007年中,發展完成多重判決(分段計分)及條件式判決(Special Judge),因此可以正確判定可列舉的多重解答以及難以列舉或甚至無法列舉,但有規則可循的不特定測資。
2007年底,獲教育部全國校園軟體創意競賽 教學應用及自由創意組 第二名。
2008年初,實作完成多人管理模式,使用者可增加題目及舉辦考試,正式具備使用者參與的特性。
2008年底,順利舉辦第一屆海峽兩岸青少年程式設計競賽,報名人數達 2千人以上。通過這場大規模的競賽可證明系統無論是在效能、穩定度方面均具備一定的水準。
2009年,獲得教育部『國際大專院校程式設計推廣與培訓計劃』採用作為解題平臺,網址: http://ptc.moe.edu.tw/
2010年,獲『高雄市資訊學科能力競賽複賽』採用作為競賽系統,並順利完成該項競賽。
2011年,提交之程式碼突破 100 萬筆。題目數量突破 1000 題。