@[murder_drones](/user/610393) Linux 下的 `diff` 命令可以比较两个文件,通过 `system` 函数调用的 `diff` 会令 `system` 产生返回值。若返回值不为 $1$ 就是有差异。
比如 `diff 1.cpp 2.cpp` 就会比较两个 cpp 的差异。若不同则 `system("diff 1.cpp 2.cpp")` 返回非零值,否则返回 $0$。
by Federico2903 @ 2024-02-26 15:09:58
@[murder_drones](/user/610393) 然后你 `do while` 用 `system` 调用 Generator 和 std 以及你的程序就能对拍了。
by Federico2903 @ 2024-02-26 15:10:58
@[_Skyfire_](/user/381949) 笔误了。返回值不为 $0$ 是有差异。
by Federico2903 @ 2024-02-26 15:11:41
```cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
while (1) {
system("你的数据生成器");
system("你的正解程序");
system("你的暴力程序");
if (system("diff --strip-trailing-cr 你的正解输出文件 你的暴力输出文件") {
system("notify-send 对拍出现错误");
string s; getline(cin, s);
}
}
}
```
基本上和 windows 差不多,只不过比较器用 diff。
by CuteChat @ 2024-02-26 15:13:33
可以写 python
```python
#!/bin/env python3
import os
cnt = 0
while True:
cnt += 1
print(f"Testcase {cnt} is running...")
os.system("./dt.py > in")
os.system("./bf < in > ans")
os.system("./main < in > out")
if os.system("diff out ans -Bb"):
input("WA")
```
然后 dt.py 是造数据的 python,或者也可以写什么都行。
运行之前一定要写 `#!/bin/env python3` 或 `#!/bin/python3`,写完以后 `chmod u+x xx.py` 对 xx.py 这个文件添加可执行权限
by yukimianyan @ 2024-02-26 15:14:18
@[_Skyfire_](/user/381949) @[chat_jinxuan](/user/726525) @[yukimianyan](/user/509229) 感谢各位的回答!
by murder_drones @ 2024-02-26 15:56:33
如果 diff 莫名奇妙出现问题可以后面加上 `-b` 进行忽略空格比对
by HHH6666666666 @ 2024-02-26 17:20:33
如果懒得每次写完编译可以放在对拍程序里开始前编译
by HHH6666666666 @ 2024-02-26 17:21:28
@[HHH6666666666](/user/767788) thx
by murder_drones @ 2024-02-27 18:58:03