简易对拍器
Github项目地址
2021/9/23
环境需求
仅支持windows
装有MinGW并且添加到环境变量(使用g++编译)
用法
- 将两份程序(一般是你的不知道哪错了的程序和标答/暴力解)扔进
program1.cpp和program2.cpp - 在
generator.cpp里写随机输入数据生成器,对应你的这道题目 - 双击
run.bat运行,输入希望对拍的次数,等待对拍结果
对拍结果完全一样显示 [Accepted]
不同则会显示 [Wrong Answer]
有不同时,会同时显示使两份程序结果不一样的数据,你就可以复制拿去debug了
同时所有结果都会保存在result.txt里,关掉控制台后仍然可以查看

2022/8/10更新
改了部分文件名,
constructor被改成了generator,其他变更不影响使用默认对比方式已忽略行末空格和回车。
现已支持special judge
用法:同样方法放入程序和编写数据生成器之后,还需在
work/special_judge.cpp 中编写spj
spj必须包含头文件
judge.h,这个头文件提供了一些基础的api。
引用头文件后,你可以使用三个输入流,它们都为 ifstream。
inp 从本组的输入数据中读取
ans1 从 program1 的输出数据中读取
ans2 从 program2 的输出数据中读取
判题之后,你需要给出评测结果,judge.h
提供了以下api,建议使用:
AC();给出正确提示WA();给出错误提示display();显示数据,建议在答案错误时显示color(int x);更改字体颜色,具体颜色对应值如下:
hint(const string &s);以黄色字体给出提示信息warn(const string &s);以红色字体给出提示信息
当然你也可以自由使用 cout/printf 等方式输出。
例如,下面是一个判断精度是否在 1e-6 以内spj
#include "judge.h"
// sample spj for accuracy within 1e-6
// input data can be read by inp(ifstream)
// program1 output can be read by ans1(ifstream), so as ans2.
int main() {
double as1, as2;
ans1 >> as1;
ans2 >> as2;
if(abs(as1 - as2) / as2 < 1e-6) AC();
else {
WA();
display();
color(YELLOW);
printf("The accuracy is %.10f\n", abs(as1 - as2) / as2);
color(WHITE);
}
inp.close();
ans1.close();
ans2.close();
return 0;
}效果如下:

简易对拍器
http://www.lxtyin.ac.cn/2022/08/10/玩具/简易对拍器/