DOMjudge 中文文档
  • 概述
  • 术语对照表
  • 管理员手册
    • 1 Domjudge 总体介绍
      • 1.1 功能
      • 1.2 环境依赖
      • 1.3 版权许可
      • 1.4 联系方式
    • 2 比赛安排
      • 2.1 比赛硬件
      • 2.2 环境依赖
    • 3 安装与配置
      • 3.1 快速安装
      • 3.2 准备工作
      • 3.3 安装评测系统
      • 3.4 安装数据库
      • 3.5 Web 服务器配置
      • 3.6 微调服务器的设置
      • 3.7 安装 judgehost
      • 3.8 构建和安装 submit client
      • 3.9 配置
      • 3.10 OpenID connect
      • 3.11 可执行文件
      • 3.12 语言设置
      • 3.13 设置特殊运行和比较程序
      • 3.14 通知系统
      • 3.15 其他可配置脚本
      • 3.16 日志和调试
      • 3.17 (重新)生成文档和团队手册
      • 3.18 可选功能
      • 3.19 更新
    • 4 配置一场比赛
      • 4.1 配置比赛数据
      • 4.2 比赛里程碑
      • 4.3 用户验证
      • 4.4 提供测试数据
      • 4.5 开启守护进程
      • 4.6 检查确保一切就绪
      • 4.7 测试裁判解(jury solutions)
    • 5 队伍环境
    • 6 网页界面
      • 6.1 裁判及管理员视图
      • 6.2 得分榜
      • 6.3 气球
    • 7 安全性
      • 7.1 考量
      • 7.2 内部安全
      • 7.3 root 权限
      • 7.4 文件系统权限
      • 7.5 外部安全
    • 附录
      • 8 常见问题和解决方案
        • 8.5 Memory limit errors in the web interface
        • 8.6 Compiler errors: `runguard: root privileges not dropped'
      • 9 多站比赛
      • 10 致开发者
        • 10.1 从 Git 源码库引导
        • 10.2 维护模式安装
        • 10.3 Makefile 结构
  • 裁判手册
    • 1 Domjudge 总体介绍
      • 1.1 功能
      • 1.2 版权许可
      • 1.3 联系方式
    • 2 概要
      • 2.1 裁判与管理员
      • 2.2 榜单
    • 3 比赛前
      • 3.1 题目及语言
      • 3.2 核对测试数据
      • 3.3 测试题解
      • 3.4 热身赛
    • 4 比赛期间
      • 4.1 监测队伍状态
      • 4.2 评测提交
      • 4.3 解释请求
    • 5 比赛后
    • 附录
      • 6 题目打包格式
  • 队员手册
    • 0 概要
    • 1 提交题解
      • 1.1 通过命令行
      • 1.2 通过网页界面
    • 2 查看提交结果
      • 2.1 可能的结果
    • 3 解释
    • 4 提交是怎么被评测的?
      • 4.1 提交题解
      • 4.2 编译
      • 4.3 测试
      • 4.4 各种限制
    • 附录
      • A 样例代码
Powered by GitBook
On this page
  • 比较程序
  • 运行程序

Was this helpful?

  1. 管理员手册
  2. 3 安装与配置

3.13 设置特殊运行和比较程序

Previous3.12 语言设置Next3.14 通知系统

Last updated 6 years ago

Was this helpful?

为了解决不符合固定输入和/或输出的方案的题目, DOMjudge 可以更改提交被运行和判断是否正确的方式

处理提交的运行和检查的后端脚本 testcase_run.sh 调用单独的程序来运行提交和比较结果; 这些可以进行单独地设置并适应每个问题的需求; 为此, 必须创建上几节所述 的可执行文档; 然后必须在题目的 special_run 和/或 special_compare 字段选择可执行文件 (空值表示使用默认的运行和比较脚本; 可以在全局设置中设置这些默认值); 在创建自定义运行和比较程序时, 我们建议重新使用处理繁琐标准部件的脚本; 详情参见 boolfind 示例

比较程序

比较程序/脚本应该遵循 . DOMjudge 使用那里指定的 作为默认值, 可以在 找到

注意: DOMjudge 只支其中描述功能的子集, 特别的, 调用语法是:

/path/to/compare_script/run <testdata.in> <testdata.ans> <feedbackdir> <compare_args> < <program.out>

其中 testdata.in testdata.ans 是参考输入输出文件, feedbackdir 要写入包含例如评测响应文件 judgemessage.txt (仅允许的其他文件有 teammessage.txt score.txt judgeerror.txt diffposition.txt), compare_args 是一个可以在配置比赛题目时设置的参数列表, program.out 是队伍的输出; 验证程序不应该对它的工作目录做出任何假设

有关编写和修改比较(验证器)脚本的更多详细信息, 请参阅 boolfind_cmp 示例和文件 testcase_run.sh 的顶部的注释

运行程序

特殊运行程序可以在某些情况下使用, 例如, 为了创建一个交互式问题, 其中参赛者的程序和评测程序交换信息, 并根据自己的输出接收数据; boolfind 问题作为交互式问题的示例包含在内, 请参阅 docs/examples/boolfind.pdf 获取问题描述

用法和比较程序类似: 你可以自己创建一份程序, 或者使用我们提供的脚本, 它处理评测程序和参赛者程序在 stdin/stdout 上的双向通信(参见 boolfind_run 可执行文档中的 run 文件).

对于第一种情况, 程序必须接受和 run_wrapper 相同的调用语法, 语法记录在该文件中; 使用 run_wrapper 时, 应将其复制成 run 到你的可执行文档中; 裁判必须编写一个名为 runjury 的程序, 并接受调用语法:

runjury <testdata.in> <program.out>

其中参数分别是是读取测试数据和输出写入的文件; 该程序将通过 stdin/stdout 和参赛者的程序之间进行通信; 还必须创建一个特殊的比较程序, 因此写入 \ 的数据并不重要, 只要比较程序可以从内容中推断出参赛者程序的正确性就行

Kattis/problemarchive 输出验证器格式
默认输出验证器
https://github.com/Kattis/problemtools/blob/master/support/default_validator/