里程碑
里程碑是指解题过程中的中间答案。许多题目解题中可能会产生中间答案,解题者在输入框提交这些中间答案后,由判题系统给出“里程碑”的确认,来证明解题者走在正确的路上。
在 CCXC Engine 中称之为“附加答案”(Additional answers)。
里程碑的分类和使用
验证中间答案
- 谜题分为多个小部分,需要验证每一个小部分的答案;
- 谜题需要解出一个中间答案,中间答案本身是下一步的线索(如排序或提取方式等),需要帮助解题者验证这个中间答案;
- 谜题最终答案可能有多种表示,因此当解题者提交可接受的其他答案时,给出明确的最终答案。
在这种情况下,即使没有里程碑,解题者也应该可以完成解题。
给出额外信息
- 谜题在解出一个答案后,通过提交这个答案,可以获取到额外信息,而这个额外信息是继续解题的关键;
这种情况下,提交里程碑本身不影响题目的展示。但是提交里程碑对解题是必要的。
切换题目状态
- 提交一个答案后,让题目状态发生变化。可能会影响题目内容的展示。
这样的题目通常都是互动题或者是伪装成普通题目的互动题。通过提交里程碑答案的形式与题目交互。
彩蛋
- 里程碑系统也常常被用作触发彩蛋。提交特定的内容后,让解题者确认自己找到的是个彩蛋。
这样的题目通常不会将自己标记为:“含有里程碑的题目”。
添加或编辑里程碑
在新建题目时,无法添加里程碑。
在题目创建后,通过“编辑”按钮打开编辑题目对话框。此时左下角将出现“添加附加答案(里程碑)”按钮。点击后,会打开“附加答案(里程碑)管理”对话框。
附加答案
输入里程碑的答案。
输入普通字符串时,将按照“标准判题函数”进行判定。
附加答案也可以输入正则表达式,正则表达式必须由@/
开头,之后跟上正则表达式内容。
提交的答案会按照从上到下的顺序依次匹配。
消息
可以输入任意文本。在触发里程碑后,对应的消息会返回给提交这个答案的解题者。
解题者会在答案判定对话框中看到这个消息,也会在提交日志里记录下来。
额外动作
用于控制题目状态。
每个题目均有一个 Dict<string, string>
的状态字典,可以存储任意键值对。在VUE 题目和后台题目脚本中,可以通过API来访问这个状态字典。
通过在额外动作里输入简单的指令,可以通过提交答案来控制题目状态。
可用的指令如下:
set key value
:添加或更新一组key-value值。del key
:删除keyclear
:清空状态集合
不计数
这是一个复选框。当你不需要这个里程碑被计入题目的里程碑数量时,可以选中它。
我们会在题目展示页向解题者展示该题目是不是含有里程碑。
但是对于一些题目,例如答案的多种表示或是彩蛋,并不适合向解题者展示,可能会被解题者误解为需要一个中间步骤。在这种情况下,可以选中“不计数”复选框。