首页 > 其他分享 >HydroOJ 从入门到入土(17)各种客观题的设置

HydroOJ 从入门到入土(17)各种客观题的设置

时间:2024-05-07 15:00:43浏览次数:20  
标签:设置 17 客观 HydroOJ 空格 yaml 入土 答案 config

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 里,有空再说。

如果你要用到大量的客观题,建议自己写个工具。

标签:设置,17,客观,HydroOJ,空格,yaml,入土,答案,config
From: https://www.cnblogs.com/bowen404/p/18177340

相关文章

  • 1. 实战7.4HDU1710-由先序和中序序列产生后序序列
    希冀平台:代码:#include<iostream>#include<vector>#include<algorithm>#include<math.h>#include<sstream>#include<string>#include<string.h>#include<iomanip>#include<stdlib.h>#include<map>#includ......
  • ABX盲听测试指南.18176383
    本次测试旨在测试人类对不同品质的音源的敏感程度,在本次测试中我们会测试:128kbps和320kbps的mp3能否听出区别320kbps的mp3和flac能否听出区别本次测试针对如下人群:普通人、发烧友、职业音频从业者(受过专业听音训练)、音频爱好者本次测试所需工具和音源:https://wwp.lanzouo.......
  • [题解]P1757 通天之分组背包
    P1757通天之分组背包分组背包模板题。总共\(s\)组,每组最多取一个物品,实际上就是一个物品总数为\(s\)的背包。for(inti=1;i<=s;i++){//枚举组 for(intj=1;j<=n[i];j++){//枚举每组的元素 for(intk=1;k<=m;k++){//枚举背包大小 f[i][k]=max(f[i][k],f[i-1][k]); if(......
  • VS2017+QT5.9.1 自定义loggerControl
    创建自定义类LoggerControl继承QListWidget#pragmaonce#include<QListWidget>#include"Helper.h"#include<QTime>#include<QPainter>classLoggerControl:publicQListWidget{Q_OBJECTpublic:LoggerControl(QWidget*paren......
  • Dash 2.17版本新特性介绍
    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/dash-master大家好我是费老师,不久前Dash发布了其2.17.0版本,执行下面的命令进行最新版本Dash的安装:pipinstalldash-U2.17版本中新增了多项重要的新功能,使得我们在开发Dash应用功能时更加的得心应......
  • Less17基于报错的字符型注入
    Less17基于报错的字符型注入打开环境是一个密码重置页面在用户名栏输入各种语句都无效,遂审计源码functioncheck_input($value) { if(!empty($value)) { //truncation(seecomments) $value=substr($value,0,15); } //Stripslashesifmagicquotesenabled......
  • P3612 [USACO17JAN] Secret Cow Code S
    题目:P3612[USACO17JAN]SecretCowCodeS题面翻译奶牛正在试验秘密代码,并设计了一种方法来创建一个无限长的字符串作为其代码的一部分使用。给定一个字符串,对字符串进行一次操作(每一次正确的操作,最后一个字符都会成为新的第一个字符),然后把操作后的字符串放到操作前的字符串的......
  • [ICPC2017 WF] Scenery
    提供一个\(O(n^2\alpha(n))\)的做法。这种匹配问题如果直接寻找最优的匹配方式是困难的,因为\(\geqslantk\)的限制,当前匹配的点会对之后的产生不小的影响。但是如果我们\(\text{fix}\)好了一个选择的升序位置序列\(a\),想要判定其是否合法是容易的,需要以下两个条件:\(1.\)......
  • 浙大版C语言程序设计习题11-17
    点击查看代码typedefstructNODE{intdata;structNODE*next;}NODE,*Linkedlist;//初始化头节点voidInit(Linkedlist&L){L=(NODE*)malloc(sizeof(NODE));L->next=NULL;}//尾插法创建链表LinkedlistCreateFromRear(LinkedlistL){NODE*rear=L;for......
  • Raft论文阅读笔记.18171971
    本文是对Raft论文阅读后的一些核心内容总结原论文:InSearchofanUnderstandableConsensusAlgorithm(ExtendedVersion)Raft概览Raft论文中用几个表格给出了Raft的细节概览,这里不用仔细阅读,后面学习的时候会慢慢深刻的理解这些内容server持有的状态RPC原语server规......