HydroOJ 從入門到入土(18)各種客觀題的設置

HydroOJ 的客觀題功能,潛力巨大,但不夠好用。期待易用性改進。

一、想法

本來覺得客觀題的配置,官方文檔已經寫得清清楚楚了,照着做就可以了,結果沒想到成爲了羣裏日經問題。

而且由於是日經問題,所以羣裏幾乎沒啥人會給新手回答此類問題,就很影響入門體驗。

直到前兩天指導了一個來問我的小夥伴之後,發現有些地方可以卡死整個建題流程,所以寫這一篇,稍作說明。

二、官方文檔

  • https://docs.hydro.ac/docs/user/problem.html#客觀題

  • 客觀題分兩部分,題面和答案。

    • 題面相對簡單,就三種(填空、單選、多選),按格式寫就好
    • 答案格式採用 yaml,縮進和符號要求比較複雜,很多人都是卡在答案上了
  • 另外,文檔裏沒寫的是,默認情況下,多選題部分分。也就是如果只答對了一部分答案,那麼會拿到一半的分數。

三、注意

1. 評測設置無法保存 config.yaml

配置好題面後,點創建會自動跳轉到 測試數據設置(文件)。如果直接去點 評測設置,會看到 題目類型:客觀題 的選項。然後點左邊的 config.yaml 按照官方文檔去設置,發現一直報錯無法保存,然後在無數次嘗試失敗之後,產生了極度自我懷疑和文檔懷疑。

注意,這裏無法保存是正常(?)的,因爲這個評測設置界面的客觀題編輯功能有 bug,而且一直沒修,所以不能用。

正確的使用方法有以下幾種:

  1. 測試數據設置 界面,直接 創建 一個 config.yaml 文件,並寫入保存。要麼 上傳,要麼拖拽,把一個本地文件直接傳上去。
  2. 如果已經在 評測設置 界面,就點擊右側出現的 config.yaml 文件,編輯後保存。如果沒有,可以直接點 上傳,上傳一個本地寫好的 config.yaml 上去。
  3. 下載一個之前已經做好的題,在已有的題上改。

另外,如果你點了 題目類型:客觀題 的選項,會自動生成出來一個 config.yaml 文件,這個文件裏的 answers: 下邊會有個 []。如果你希望在這個 yaml 文件基礎上改,一定記得把這個 [] 刪掉,不然會錯。

2. 部分分

很多的考試是沒有部分分的,以此來加強多選題的難度。

所以如果你希望關閉部分分,可以參考我之前的文章:HydroOJ 從入門到入土(9)查看自測、修改頁面標題、客觀題評分標準等(需改源碼)

3. yaml 格式

yaml 是個很嚴格的格式,尤其是空格。空格表示層級關係,絕對不能錯漏。空格不能與 tab 混用。

具體自行百度。

4. 一題多解的設置

一題多解在官方文檔裏有相應的配置,照着寫即可。說幾點注意事項:

  • 如果答案中有空格,或者特殊符號,記得在答案外邊加引號。一般單引號就行,如果答案中有單引號,那就轉義或者用雙引號。

  • 如果多個答案都是等價的,就把分數都寫成一樣的就行。

  • 一題多解這個同時適用於選擇題和填空題,只認題號。也就是說,對於以下答案,

      '2': # 填空題/選擇題,多答案,不同答案對應不同分數,注意空格縮進
        'A': 30 # 也可以使用相同分數,即同時存在多個正確答案
        'B': 10
    
    • 如果題面是 {{ input(2) }},這些答案就是填空題的答案,任意一種答案都得分。
    • 如果題面是 {{ select(2) }} ,這些答案就是選擇題的答案,任意一種答案都得分。

5. 填空題答案

填空答案相對比較難以控制,所以我建議是去掉所有非必要空格,並在題目要求中,

加粗大字

明確要求答題者作答時,

不要寫多餘空格,

不然一律判錯。

四、我的例子

如果你還是無法完成客觀題配置,我把官網的配置做成了一道題,放在了我之前的項目裏,下載後直接導入即可修改使用。

hydrolizer/客觀題配置.zip

五、建議

我自己寫了一個 csv 轉 yaml 的小工具,防止手殘。不過暫時沒空整理到之前寫的 hydrolizer 裏,有空再說。

如果你要用到大量的客觀題,建議自己寫個工具。

感謝羣友@小蛐蛐 貢獻的客觀題生成 GUI 工具:https://github.com/StupidQu/HOPC

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章