Skip to content

Commands Problem

dxx114514-stack edited this page Oct 2, 2026 · 3 revisions

命令参考 · 题目模块 problem

所有功能通过 clijudge <命令> [子命令] [参数...] 调用。列表类 / 详情类命令输出缩进 JSON(两空格),可直接被脚本解析。通用约定(帮助、退出码、状态表)见 其它模块。

clijudge problem count — 统计题目数量

输出: 纯数字,如 3。

clijudge problem create [标题] [选项...] — 创建题目

选项 参数 说明
-background / -describe Markdown 文件路径 题面,读取文件内容写入 description(两者同时给出时后者生效)
-exampleio 输入文件 输出文件 样例输入 / 输出
-instyle / -outstyle Markdown 文件路径 输入 / 输出格式说明
-compare 比较模式 见 评测机制 · 比较模式
-spj-code 源文件路径 Special Judge 源码(内嵌 spj_code)
-spj-exe 可执行文件路径 已编译的 SPJ 可执行文件(special_judge_exe)
-float-abs / -float-rel 正实数 浮点容差(大于 0 才生效)
-type traditional / answers_only / interaction / communication / communication_exec 题型
-answer-ext 扩展名(默认 out) answers_only 期望答案文件扩展名
-source-name 文件名 选手源文件名(多文件题型)
-subtask-mode simple / group / all_or_nothing 子任务计分聚合
-dependence JSON,如 {"2": [1]} 子任务依赖
-interactor .cpp/.c 源码或可执行文件 交互题交互器(源码内嵌,否则记录绝对路径)
-grader 目录 递归内嵌目录下全部文件到 grader_files
-generator .cpp/.c 源码或程序 测试点生成器(源码内嵌 generator_code,否则 generator_exe 绝对路径)
-generator-exe 程序路径 直接指定生成器可执行文件
clijudge problem create "A + B Problem" -describe statement.md -exampleio in.txt out.txt
clijudge problem create "浮点求和" -compare float_all -float-abs 1e-6 -type answers_only
# → Problem created with ID: 1

失败语义按选项分三类,并非所有失败都报错回滚:

  • 文件类选项(-describe -background -exampleio -instyle -outstyle -spj-code)指向的文件不存在时不报错:按空内容写入,题目仍创建成功并输出 Problem created with ID: N(退出码 0);
  • 校验类选项(-type、-dependence JSON 非法、-interactor、-grader、-generator 等)失败时打印错误、返回 1,已创建的题目会回滚删除;
  • -float-abs / -float-rel 传非数字时 std::stod 抛异常,进程异常终止(crash,非正常退出码)。

clijudge problem edit [编号] [选项...] — 编辑题目

选项与 create 完全相同,另加 -title [新标题]。

  • 输出 Problem 1 updated.;未提供任何选项时 No updates specified.(退出码 1)

clijudge problem delete [编号] — 删除题目

  • 输出 Problem 1 deleted. / 错误 Problem 1 not found.(退出码 1)

clijudge problem view [编号] — 查看题目

格式化输出题面:=== Problem N ===、Title、Description / Input / Output、样例(## Sample Input/Output)、Hint、## Limits(时间 / 内存 / 公开 / 隐藏)、非默认题型或比较模式时的 ## Special Judge 段(Problem Type / Compare Mode、Float Abs/Rel Tolerance、Allowed Languages 行)。SPJ 为内嵌源码时仅显示 Source: embedded (N bytes),不直接输出代码;可执行文件显示 Special Judge Exe: 路径。不输出生成器信息。

clijudge problem list [L=1] [R=50] — 列出题目

题目摘要 JSON 数组,编号区间 [L, R]。

clijudge problem submit [编号] [程序文件] [--as 用户名] — 提交评测

按扩展名选语言编译运行,结果写入提交记录。--as 省略时用户名记为 unknown。

  • 可执行文件直接评测:Windows 下 .exe .com .bat .cmd、Linux 下 ELF(\x7fELF 魔数)判定为可执行文件时跳过编译,同时跳过源码大小检查
  • 源码超过 judge.source_size_limit_kb(默认 50 KB)→ CE(Source file too large (limit 50 KB))
  • 题目不存在或提交文件不存在 → 记录状态为 pending / error(受理与校验阶段的状态,非 16 个评测状态之一)
=== Submission Result ===
Status: AC
Score: 100
Time: 15 ms
Memory: 3200 KB
User: alice

退出码: AC 为 0,否则 1。

clijudge problem testdata [编号] [子命令] — 测试数据管理

无子命令时等价于 list。

list — 列出测试点

测试点 JSON 数组(id / score / time_limit / memory_limit / subtask_id / 输入输出数据等)。

create [in] [out] [time] [mem] [pts] — 添加测试点

  • in / out 为文件路径;传 - 表示占位测试点(内容由生成器在每次评测前生成 data.in / data.out)
  • time(ms)与 mem(MB)省略或为 -1 时回落到题目级限制(再缺省 1000ms / 256MB)
  • pts 默认 25;新测试点归属子任务 1
clijudge problem testdata 1 create data.in data.out 1000 256 10
clijudge problem testdata 1 create - -          # 生成器占位测试点
# → Test case created with ID: 1

-set-all [-time ms] [-mem MB] [-pts n] — 批量修改所有测试点

仅覆盖给出且 ≥ 0 的项。输出 All test cases updated.

-zip [zip路径] — 从 ZIP 导入测试数据

配对 zip 内的 *.in 与同名 *.out / *.ans,按文件名导入(追加,不清空已有测试点);无配对的 .in 跳过并告警。

Test case imported: 1 (ID: 4)
Imported 3 test case(s).

delete [测试点编号] — 删除测试点

输出 Test case 1 deleted. / Test case 1 not found.(退出码 1)

clijudge problem export [编号] [路径] — 导出题目

按输出路径扩展名选择格式:

  • .zip:problem.json + testdata/*.in / *.out
  • 其它:单个 JSON 文件(version: 1,去除 id,测试点命名 case_N)

两种格式均兼容 NoldOJ 导入格式。输出 Problem exported to: backup.zip

clijudge problem import [路径] — 导入题目

接受 .zip(读取 problem.json 并解析 testdata 引用)或 .json(含 problem + test_cases,兼容 NoldOJ version 格式与 CliJudge 原生格式)。导入时重新分配编号。

安全提示: 题目包可能携带 Special Judge / 交互器 / 生成器 / grader 源码,这些代码在评测期间以可信(放宽隔离)模式执行。检测到此类组件时会输出 Warning: ... Only import packages from sources you trust.——请只导入可信来源的题目包。详见 沙箱与安全。

输出 Problem imported with ID: 5


返回 Home · 其它模块见 比赛 / 其它

Clone this wiki locally