Linux下對拍腳本
阿新 • • 發佈:2018-07-19
lac diff c代碼 col don 數據 bili 註意 height
使用說明:
1. 被測代碼、正確代碼、生成器代碼均使用文件輸入輸出;
2. 對拍前會清屏,請註意;
3. 輸出文件的文件名請和代碼文件名保持一致;
4. 若無限循環輸出AC未停,則很可能正確;輸出WA並跳出那就WA了;
5. WA時輸出兩份答案,被測在前,AC在後;
6. enjoy coding;
代碼:
1 #!/bin/bash
2
3 clear; # 清屏
4 read -p "輸入被測源代碼名稱(不含拓展名):" a # a就是待測代碼名稱
5 read -p "輸入正確源代碼名稱(不含拓展名): " b # b是暴力/AC代碼名稱
6 read -p "輸入生成器代碼名稱(不含拓展名):" c # 數據生成器,一組即可,需要隨機
7
8 # 以下進行編譯三份代碼
9 gcc $a.cpp -o $a -Wall -lm --static -DONLINE_JUDGE;
10 gcc $b.cpp -o $b -Wall -lm --static -DONLINE_JUDGE;
11 gcc $c.cpp -o $c -Wall -lm --static -DONLINE_JUDGE;
12
13 # 不會被一閃而過的AC蓋掉編譯信息
14 read -p "按任意鍵以繼續: " -n 1
15
16 # 開始對拍
17 while true; do
18 ./$c>$c.in
19 ./$a<$c.in>$a.out
20 ./$b<$c.in>$b.out
21
22 if diff $a.out $b.out; then
23 printf "AC\n" # 如此,一直正確就會無限輸出AC
24 else
25 echo "WA" # WA了就跳出
26 cat $a.out $b.out
27 exit 0
28 fi
29
30 done
備用。
請使用手機"掃一掃"x
Linux下對拍腳本