Ubuntu下的测评

哎我太弱了。。。今天问了NZK神牛才知道应该怎么搞炯。。
套用zxytim神牛的话,Bash无比强大啊。。
所以Ubuntu下面评测直接写个脚本就OK了。。完全无压力。。
比如说一个例子。。a+b problem
首先要一个数据生成器:
datamaker.cpp
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main()
{
srand(clock());
cout<<rand()<<" "<<rand()<<endl;
}还要一个标程:
prog_std.cpp
#include<cstdio>
#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
long long a,b;
cin>>a>>b;
cout<<a+b<<endl;
}
然后写一个生成数据的脚本
makedata.sh
name=aplusb
maker=datamaker
g++ -o $maker $maker.cpp
for((i=0;i<10;i++))do
./$maker>$name.in$i;
done
std=prog_std
g++ -o $std $std.cpp
for((i=0;i<10;i++))do
./$std<$name.in$i>$name.out$i;
done然后运行这个。。。10个in和out就出来了炯。。。

然后写一个程序:
aplusb.cpp
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main()
{
long long a,b;
cin>>a>>b;
cout<<a+b<<endl;
}最后写一个checker
check.sh
cd /host/OI/Judge
name=aplusb
g++ -o $name $name.cpp
for((i=0;i<10;i++))
do
echo Data$i;
if time ./$name<$name.in$i | diff -q $name.out$i – ;then
echo AC;
else
echo WA;
fi;
done
然后打开check。。点在终端运行就可以直接使用了。。
测其它的话把name改掉就可以了。。。
Ubuntu太NB了。。Orz!!!!!!!!!!!!!!!

6 thoughts on “Ubuntu下的测评

  1. 。。其实如果数据名称不规则(如POI)的话,可以用find, sed做到照样评测,完全不用配数据了- -!。。用linux本身就有的命令还可以卡时。linux下的评测系统推荐开哥写的injuslin,非常方便,配数据按着回车不动就行了- -!功能也很强大。。开源GPL发布~详见:injuslin.sf.net

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>