2009-06-19 58 views
13

我參加了一些在線編程比賽,發現在線評委的功能非常出色。從頭開始創建在線評委

即將到來的話題,我的大學也將舉辦一個在線編程比賽,我負責這個活動。我正在評估我實施在線法官的選擇。當然,我可以利用SPOJ這樣的已有的評委,但讓我感到我和我的一些朋友也可以嘗試創建一個。如果我們失敗了,我們總是可以迴避這些。

所以任何人都可以請給我一些大綱或資源,我該如何解決它?如果我對評委如何實現「沙盒」有所瞭解,這也會很有幫助。我們手頭有幾個月的時間。

UPDATE此問一對夫婦的更多的問題對SO本身http://github.com/anomit/loki

回答

1

我真的不確定你的問題是關於什麼的。從頭開始爲法官編寫設計規範並不難。

您使用給定的輸入數據運行一個事物,並將輸出數據提供給由問題作者編寫的測試程序(因爲並不總是唯一的答案)。人們通過在乾淨的機器上遠程運行沙箱來做沙箱。

添加:請,沒有代碼分析。您有兩種選擇,您可以在比賽期間向參賽者提供代碼分析。

  • 如果你這樣做:他們花費最後5分鐘的時間來確保沒有下降點。代碼在這個過程中變得更糟。

  • 如果你不這樣做:你打破了「法治」:人們知道給予積分的機制(這也是爲什麼你總是給他們在問題文本中進行第一次測試的原因)。

更新:對不起,我沒有一開始你問一些具體的問題通知。沙盒可能不如你想像的那麼重要 - 在競爭激烈的情況下,代碼變得公開可用,所以「黑客」會非常尷尬。但是,我認爲我看到了一種練習,你不能直接執行I/O,文件系統或與系統的任何其他交互(他們爲你編寫main(),它總是相同的;你只寫入給定輸入/輸出流)。你的法官應該只運行它自己編譯的源代碼。

1
+0

感謝您的快速回復。但我看到有兩個問題: 1.源代碼的svn關閉了 2.它似乎沒有處於積極的發展之中 – user108127 2009-06-19 19:55:58

3

我不知道網上的判斷是什麼,但我相信它是一個軟件評估程序爲了正確。

我會爲此使用一些構建,測試和分析庫。示例將是Ant,JUnitCheckstyle

您將參與者提供的代碼放入文件中。使用構建工具編譯它。

  • 生成失敗:0分
  • 構建與警告1點
  • 生成成功而不警告2分

成功然後運行一些測試中,該驗證解的正確性。

  • 對於每一個測試通過了:1點

最後運行一些代碼分析工具來判斷代碼的質量。

  • 扣掉1分的效用

當然,你可能想的點值轉移到你的需求的每一個投訴。