跳转至

编辑题目

基本属性

题目一共拥有六个基本属性,即“题目名称”、“题目背景”、“题目描述”、“输入格式”、“输出格式”

尽管在当前版本中只有“题目名称”会被用到,但在后续版本中,其他属性将会被展示在本项目的OJ中。

除了“题目名称”外的属性都支持Markdown和Latex符号。

评测姬配置

源文件名称是唯一的选项,用于标识选手的源文件地址。

例如当源文件名称设置为hello时,选手的代码文件需要放置在选手文件夹/hello/hello.cpp,放置在其他位置则无效!

测试点配置

对于每个测试点而言,其拥有六个属性,分别是“输入”、“答案”、“输入方式”、“输出方式”“输入文件”、“输出文件”(黑体字表示必选项,斜体字表示可选项)。

⚠️ 输入输出文件必须是一个相对路径,而且仅在输入输出方式FILE时可设置。

⚠️ 输入输出的编码方式均为utf-8,使用其他编码方式输入将会导致UnicodeDecodeError错误(计划修复)。

🔊 不必考虑CRLF和LF的区别,ItsWA已经在judge: 测试点的CRLF和LF不兼容 (27c3f04)中用两行代码解决了该问题。

输入答案不必解释。

输入方式STDINFILE两种,当设置为STDIN时ItsWA将会通过标准输入(stdin)为程序输入参数;设置为FILE时会将输入文件存储在输入文件中(可执行程序的CWD的相对位置)。

输出方式STDOUTFILE两种,当设置为STDOUT时ItsWA将会从标准输出(stdout)中读取程序输出;设置为FILE时ItsWA将会从输出文件中读取程序输出(可执行程序的CWD的相对位置)。

从文件导入测试点

输入文件后缀名:即输入测试点文件的后缀名,例如当该属性设置为ina.ina.out中的a.in将会被视作输入测试点。默认为in

答案文件后缀名:即测试点答案文件的后缀名,例如当该属性设置为outa.ina.out中的a.out将会被视作测试点答案。默认为out

测试点文件命名规则:其中需要包含一个数字,具有相同数字(注意:不是不带后缀的文件名相同)的两个输入文件和答案文件将会被视作一对测试点

合法示例:

  1. a1.ina1.out是一对测试点。
  2. a_1.ina_1.out是一对测试点。
  3. a___114.ina___114.out是一对测试点。
  4. a1.ina_1.out是一对测试点。

非法示例:

  1. a.ina.out不是一对测试点。
  2. a_1.ina.out不是一对测试点。

形式化的,这是ITED中判断文件是否是一对测试点的代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
let ckpt_file_groups = computed(() => {
    const ckpt_file_names: File[] = checkpoints_files.value
    const input_files: File[] = []
    const answer_files: File[] = []

    ckpt_file_names.forEach(x => {
        if (x.name.endsWith(ckpt_input_suffix.value)) {
            input_files.push(x)
        } else if(x.name.endsWith(ckpt_answer_suffix.value)) {
            answer_files.push(x)
        }
    })

    input_files.sort(x => x.name.search(/[0-9]/))
    answer_files.sort(x => x.name.search(/[0-9]/))

    const result: File[][] = []
    input_files.forEach((x, i) => {
        //           输入文件      输出文件
        result.push([x, answer_files[i]])
    })

    return result
})