HydroOJ 的客观题功能,潜力巨大,但不够好用。期待易用性改进。
一、想法
本来觉得客观题的配置,官方文档已经写得清清楚楚了,照着做就可以了,结果没想到成为了群里日经问题。
而且由于是日经问题,所以群里几乎没啥人会给新手回答此类问题,就很影响入门体验。
直到前两天指导了一个来问我的小伙伴之后,发现有些地方可以卡死整个建题流程,所以写这一篇,稍作说明。
二、官方文档
- https://docs.hydro.ac/docs/user/problem.html#客观题
- 客观题分两部分,题面和答案。
- 题面相对简单,就三种(填空、单选、多选),按格式写就好
- 答案格式采用 yaml,缩进和符号要求比较复杂,很多人都是卡在答案上了
- 另外,文档里没写的是,默认情况下,多选题有部分分。也就是如果只答对了一部分答案,那么会拿到一半的分数。
三、注意
1. 评测设置无法保存 config.yaml
配置好题面后,点创建会自动跳转到 测试数据设置
(文件)。如果直接去点 评测设置
,会看到 题目类型:客观题
的选项。然后点左边的 config.yaml
按照官方文档去设置,发现一直报错无法保存,然后在无数次尝试失败之后,产生了极度自我怀疑和文档怀疑。
注意,这里无法保存是正常(?)的,因为这个评测设置界面的客观题编辑功能有 bug,而且一直没修,所以不能用。
正确的使用方法有以下几种:
- 在
测试数据设置
界面,直接创建
一个config.yaml
文件,并写入保存。要么上传
,要么拖拽,把一个本地文件直接传上去。 - 如果已经在
评测设置
界面,就点击右侧出现的config.yaml
文件,编辑后保存。如果没有,可以直接点上传
,上传一个本地写好的config.yaml
上去。 - 下载一个之前已经做好的题,在已有的题上改。
另外,如果你点了 题目类型:客观题
的选项,会自动生成出来一个 config.yaml
文件,这个文件里的 answers:
下边会有个 []
。如果你希望在这个 yaml 文件基础上改,一定记得把这个 []
删掉,不然会错。
2. 部分分
很多的考试是没有部分分的,以此来加强多选题的难度。
所以如果你希望关闭部分分,可以参考我之前的文章:HydroOJ 从入门到入土(9)查看自测、修改页面标题、客观题评分标准等(需改源码)
3. yaml 格式
yaml 是个很严格的格式,尤其是空格。空格表示层级关系,绝对不能错漏。空格不能与 tab 混用。
具体自行百度。
4. 一题多解的设置
一题多解在官方文档里有相应的配置,照着写即可。说几点注意事项:
-
如果答案中有空格,或者特殊符号,记得在答案外边加引号。一般单引号就行,如果答案中有单引号,那就转义或者用双引号。
-
如果多个答案都是等价的,就把分数都写成一样的就行。
-
一题多解这个同时适用于选择题和填空题,只认题号。也就是说,对于以下答案,
'2': # 填空题/选择题,多答案,不同答案对应不同分数,注意空格缩进 'A': 30 # 也可以使用相同分数,即同时存在多个正确答案 'B': 10
- 如果题面是
{{ input(2) }}
,这些答案就是填空题的答案,任意一种答案都得分。 - 如果题面是
{{ select(2) }}
,这些答案就是选择题的答案,任意一种答案都得分。
- 如果题面是
5. 填空题答案
填空答案相对比较难以控制,所以我建议是去掉所有非必要空格,并在题目要求中,
加粗大字
明确要求答题者作答时,
不要写多余空格,
不然一律判错。
四、我的例子
如果你还是无法完成客观题配置,我把官网的配置做成了一道题,放在了我之前的项目里,下载后直接导入即可修改使用。
五、建议
我自己写了一个 csv 转 yaml 的小工具,防止手残。不过暂时没空整理到之前写的 hydrolizer 里,有空再说。
如果你要用到大量的客观题,建议自己写个工具。
标签:设置,17,客观,HydroOJ,空格,yaml,入土,答案,config From: https://www.cnblogs.com/bowen404/p/18177340