ACM OI 对拍模板

Posted by Cww97 on 2016-10-11

FOR ACM OI

在linux的shell脚本对拍命令

执行方法:在终端下,进入当前目录,输入”sh ./nick.sh”,(其中nick.sh为当前shell脚本名)

ubuntu14.04下实测成功

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
while true; do
./make>tmp.in #出数据
./tmp<tmp.in>tmp.out #被测程序
./tmp2<tmp.in>tmp2.out #正确(暴力)程序
if diff tmp.out tmp2.out; then #比较两个输出文件
printf AC #结果相同显示AC
else
echo WA #结果不同显示WA,并退出
#cat tmp.out tmp2.out
exit 0
fi #if的结束标志,与C语言相反,0为真
done # while的结束标志

#BY NICK WONG 2014-08-29
#在终端下,进入当前目录,输入"sh ./nick.sh",(其中nick.sh为当前shell脚本名) '#'表示单行注释
#diff在两文件相同时返回空串

参考1:贴吧的讨论:http://tieba.baidu.com/p/1748233229

参考2:ACM OI windows对拍模板 (详细注释版)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@echo off  
:ac

e-make>e.in :出数据
e-3<e.in>e.out :被测程序
e-2<e.in>e.out2 :暴力程序
fc e.out e.out2
:diff -q e.out e.out2 这句可以代替上一句
if errorlevel=1 goto wa
echo ac
goto ac

:wa
echo wa
:type e.out e.out2 :这句可有可无
pause

退出状态
  此命令返回下列退出值:
  0 未找到不同处。
  1 找到不同处。
  >1 发生错误。