acm对拍程序 以及sublime text3的文件自动更新插件auto refresh
acm等算法比赛常用---对拍 以及sublime text3的文件自动更新插件auto refresh
对拍
对拍即程序自动对比正确程序的运行结果和错误程序的运行结果之间的差异
废话少说, 直接上操作步骤 :
1. 首先建立generator.cpp和data.txt 作用 : 生成测试数据
#include<bits/stdc++.h>
using namespace std;
int main(){
freopen("data.txt","w",stdout); //重定向输出
srand(time(NULL));
xxxxx ; //此处为你想生成数据的操作
return 0;
}
2. 然后建立AC.cpp和WA.cpp AC.txt和WA.txt 作用 : AC.cpp是绝对正确的程序, WA.cpp是你错误的程序
AC.cpp读取data.txt, 并输出内容到AC.txt
WA.cpp读取data.txt, 并输出内容到WA.txt
AC.cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
freopen("data.txt","r",stdin);
freopen("AC.txt","w",stdout);
xxxx ; //程序段
return 0;
}
WA.cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
freopen("data.txt","r",stdin);
freopen("WA.txt","w",stdout);
xxxx ; //程序段
return 0;
}
3. 最后建立result.bat -- 对拍比较
步骤 :
首先建立result.txt, 输入以下内容 :
@echo off
:loop
generate.exe
AC.exe
WA.exe
fc AC.txt WA.txt
if not errorlevel 1 goto loop
pause
goto loop
之后将文件后缀改为.bat, 之后双击即可运行, 每次按键均会执行一遍数据生成--ac--wa---数据比较的过程, 并输出不相同的数据部分
最后整个文件夹应当是这样的 :
suiblime Text3 实现文件自动更新内容
实现了上述对拍操作后, 由于bat执行后只能给出数据不同的部分, 还需要打开两个txt文件才能查看全部数据
每次执行generate后产生不同的数据, 所以每次对拍结果并不相同.
在sublime text3中打开txt文件在你关闭bat之前是不会自己变化的, auto refresh的引入可以让文件内容自动更新
安装插件方法 :
ctrl + shift + p ----- install package ---- Autorefresh
然后命令行输入autofresh, 可以开启/关闭自动更新, 并可以保存这一文件状态
效果 :
按任意键循环继续对拍, 可以看到两个文件都自动更新了内容
over~~