Skip to content

里程碑

里程碑是指解题过程中的中间答案。许多题目解题中可能会产生中间答案,解题者在输入框提交这些中间答案后,由判题系统给出“里程碑”的确认,来证明解题者走在正确的路上。

在 CCXC Engine 中称之为“附加答案”(Additional answers)。

里程碑的分类和使用

  1. 验证中间答案

    • 谜题分为多个小部分,需要验证每一个小部分的答案;
    • 谜题需要解出一个中间答案,中间答案本身是下一步的线索(如排序或提取方式等),需要帮助解题者验证这个中间答案;
    • 谜题最终答案可能有多种表示,因此当解题者提交可接受的其他答案时,给出明确的最终答案。

    在这种情况下,即使没有里程碑,解题者也应该可以完成解题。

  2. 给出额外信息

    • 谜题在解出一个答案后,通过提交这个答案,可以获取到额外信息,而这个额外信息是继续解题的关键;

    这种情况下,提交里程碑本身不影响题目的展示。但是提交里程碑对解题是必要的。

  3. 切换题目状态

    • 提交一个答案后,让题目状态发生变化。可能会影响题目内容的展示。

    这样的题目通常都是互动题或者是伪装成普通题目的互动题。通过提交里程碑答案的形式与题目交互。

  4. 彩蛋

    • 里程碑系统也常常被用作触发彩蛋。提交特定的内容后,让解题者确认自己找到的是个彩蛋。

    这样的题目通常不会将自己标记为:“含有里程碑的题目”。

添加或编辑里程碑

在新建题目时,无法添加里程碑。

在题目创建后,通过“编辑”按钮打开编辑题目对话框。此时左下角将出现“添加附加答案(里程碑)”按钮。点击后,会打开“附加答案(里程碑)管理”对话框。

里程碑管理对话框

附加答案

输入里程碑的答案。

输入普通字符串时,将按照“标准判题函数”进行判定。

附加答案也可以输入正则表达式,正则表达式必须由@/开头,之后跟上正则表达式内容。

提交的答案会按照从上到下的顺序依次匹配。

消息

可以输入任意文本。在触发里程碑后,对应的消息会返回给提交这个答案的解题者。

解题者会在答案判定对话框中看到这个消息,也会在提交日志里记录下来。

额外动作

用于控制题目状态。

每个题目均有一个 Dict<string, string> 的状态字典,可以存储任意键值对。在VUE 题目后台题目脚本中,可以通过API来访问这个状态字典。

通过在额外动作里输入简单的指令,可以通过提交答案来控制题目状态。

可用的指令如下:

  • set key value:添加或更新一组key-value值。
  • del key:删除key
  • clear:清空状态集合

不计数

这是一个复选框。当你不需要这个里程碑被计入题目的里程碑数量时,可以选中它。

我们会在题目展示页向解题者展示该题目是不是含有里程碑。

但是对于一些题目,例如答案的多种表示或是彩蛋,并不适合向解题者展示,可能会被解题者误解为需要一个中间步骤。在这种情况下,可以选中“不计数”复选框。

Released under the MIT License. Powered by VitePress.