#online #judge #float #strict #comparer

bin+lib ojcmp

在线评测比较器

6 个版本

0.4.0 2021 年 5 月 6 日
0.3.2 2021 年 3 月 16 日
0.3.1 2020 年 8 月 18 日
0.3.0 2020 年 7 月 21 日
0.2.2 2020 年 5 月 19 日

#4 in #judge

每月 21 次下载

MIT 许可协议

34KB
896

ojcmp

Crates.io MIT licensed CI

在线评测比较器

状态

Maintaining 0.4.0

安装

cargo install ojcmp

构建

cargo build --release

通过 cargo 安装

cargo install --path .

手动安装

cp target/release/ojcmp /usr/bin

用法

ojcmp 0.4.0
Nugine <nugine@foxmail.com>

USAGE:
    ojcmp <SUBCOMMAND>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

SUBCOMMANDS:
    float     Float compare
    help      Prints this message or the help of the given subcommand(s)
    normal    Normal compare
    strict    Strict compare
ojcmp-normal 0.4.0
Normal compare

USAGE:
    ojcmp normal [FLAGS] [OPTIONS] <--std <path>|--std-fd <fd>> <--user <path>|--user-fd <fd>>

FLAGS:
    -h, --help        Prints help information
    -q, --quiet       No output printed to stdout or stderr
    -a, --read-all    Reads all bytes of user file even if it's already WA
    -V, --version     Prints version information

OPTIONS:
    -b, --buffer-size <bytes>    Buffer size (in bytes) for both std and user file [default: 65536]
    -s, --std <path>             Std file path
        --std-fd <fd>            Std file descriptor
    -u, --user <path>            User file path
        --user-fd <fd>           User file descriptor

返回值

类型
退出代码 (AC) 0
退出代码 (WA) 1
退出代码 (PE) 2
退出代码 (错误) 101
stdout "AC" / "WA" / "PE"
stderr 错误信息

当前实现

模式:正常

trim_end(file)

judge!(AC, b"1\r\n\r\n\r\n", b"1  ");

对于每一行,trim_end(line)

judge!(AC, b"1 \n", b"1");

对于每一行,检查非空格字符之间的空格

judge!(PE, b"1 3\n", b"1         3\n");

模式:严格

用户文件必须与 std 文件具有相同的字节。

两个字节流必须完全相同。

此模式中没有 "PE"。

模式:浮点数

比较由 ascii 空白符 分隔的浮点数流。

将任何浮点数解析为 f64(即 C 语言中的 double)。

两个浮点数之间的 ascii 空白符被视为单个分隔符。

使用 CLI 选项 --eps 指定 eps 值,例如 --eps 1e-3

此模式中没有 "PE"。

变更日志

  • v0.4.0 允许传递文件 fd。将返回值更改为指示比较结果。
  • v0.3.2 修复 ByteReader 中的不稳定性。
  • v0.3.1 修复自 v0.2.0 以来出现的性能下降。允许使用不安全代码。
  • v0.3.0 禁止使用不安全代码。使用子命令进行不同的模式。
  • v0.2.2 修复处理 nan 的错误。 (yank v0.2.1)
  • v0.2.1 添加 spj_float 模式。 (yanked)
  • v0.2.0 添加严格模式。没有重大更改。
  • v0.1.3 没有功能更改
  • v0.1.2 修复算法错误
  • v0.1.1 使用不安全静态缓冲区

依赖项

~3MB
~55K SLoC