Linux 对拍程序

使用方法:

新建 match.sh文件,复制程序代码;

添加执行权限chmod +x match.sh

如下方式调用

./match.sh gen.cpp a-force.cpp a.cpp

会默认生成数据到data.in文件,并且将输出根据暴力程序和需要对拍的程序的文件名生成对应的.out文件,对拍会一直进行直到找出错误为止,ctrl+c退出

代码:

if (($# < 3)); then
    echo three argument need.
    echo Sample:
    echo "./$(basename $0) gen.cpp a-force.cpp a.cpp"
    exit 0
fi
gen_name=`echo $1 | cut -d. -f1`
force_name=`echo $2 | cut -d. -f1`
cpp_name=`echo $3 | cut -d. -f1`

cnt=0
while true; do
    ./$gen_name > data.out #出数据
    ./$force_name < data.out > $force_name.out #正确(暴力)程序
    ./$cpp_name < data.out > $cpp_name.out #被测程序
    let cnt+=1;
    if diff $force_name.out $cpp_name.out; then
        echo force:
        cat $force_name.out
        echo program:
        cat $cpp_name.out
        echo $cnt random match:AC
    else  
        echo $cnt random match:WA
        exit 0 
    fi
done

results matching ""

    No results matching ""