Repository navigation
Commands Problem
所有功能通过 clijudge <命令> [子命令] [参数...] 调用。列表类 / 详情类命令输出缩进 JSON(两空格),可直接被脚本解析。通用约定(帮助、退出码、状态表)见 其它模块。
输出: 纯数字,如 3。
| 选项 | 参数 | 说明 |
|---|---|---|
-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、-dependenceJSON 非法、-interactor、-grader、-generator等)失败时打印错误、返回1,已创建的题目会回滚删除; -
-float-abs/-float-rel传非数字时std::stod抛异常,进程异常终止(crash,非正常退出码)。
选项与 create 完全相同,另加 -title [新标题]。
- 输出
Problem 1 updated.;未提供任何选项时No updates specified.(退出码 1)
- 输出
Problem 1 deleted./ 错误Problem 1 not found.(退出码 1)
格式化输出题面:=== 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: 路径。不输出生成器信息。
题目摘要 JSON 数组,编号区间 [L, R]。
按扩展名选语言编译运行,结果写入提交记录。--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。
无子命令时等价于 list。
测试点 JSON 数组(id / score / time_limit / memory_limit / subtask_id / 输入输出数据等)。
-
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仅覆盖给出且 ≥ 0 的项。输出 All test cases updated.
配对 zip 内的 *.in 与同名 *.out / *.ans,按文件名导入(追加,不清空已有测试点);无配对的 .in 跳过并告警。
Test case imported: 1 (ID: 4)
Imported 3 test case(s).
输出 Test case 1 deleted. / Test case 1 not found.(退出码 1)
按输出路径扩展名选择格式:
-
.zip:problem.json+testdata/*.in/*.out - 其它:单个 JSON 文件(
version: 1,去除id,测试点命名case_N)
两种格式均兼容 NoldOJ 导入格式。输出 Problem exported to: backup.zip
接受 .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