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

posted @ 2024-05-07 14:56  Bowen404  阅读(694)  评论(0编辑  收藏  举报