使用说明:
        1. 被测代码、正确代码、生成器代码均使用文件输入输出;

2. 对拍前会清屏,请注意;
        3. 输出文件的文件名请和代码文件名保持一致;
        4. 若无限循环输出AC未停,则很可能正确;输出WA并跳出那就WA了;
        5. WA时输出两份答案,被测在前,AC在后;
        6. enjoy coding;

Update:

新版本的对拍脚本看上去更优美了,无实质性修改:

 #!/bin/bash

 clear;      # 清屏
 read -p "输入被测源代码名称(不含拓展名):" a   # a就是待测代码名称
 read -p "输入正确源代码名称(不含拓展名):" b   # b是暴力/AC代码名称
 read -p "输入生成器代码名称(不含拓展名):" c   # 数据生成器,一组即可,需要随机

 # 以下进行编译三份代码
 gcc $a.cpp -o $a -Wall -lm --static -DONLINE_JUDGE;
 gcc $b.cpp -o $b -Wall -lm --static -DONLINE_JUDGE;
 gcc $c.cpp -o $c -Wall -lm --static -DONLINE_JUDGE;

 # 不会被一闪而过的AC盖掉编译信息
 read -p 

 # 开始对拍
 cnt=;
 while true; do
     ./$c>$c.in
     ./$a<$c.in>$a.out
     ./$b<$c.in>$b.out

     cnt=``;

     if diff $a.out $b.out; then
         printf "\33[1;32m✔ Accepted\033[0;32m on Test\033[1;34m #%d\033[0m\n" $cnt;   # 如此,一直正确就会无限输出AC
     else
         printf "\33[1;35m✘ Wrong Answer\033[0;32m on Test\033[1;34m #%d\033[0m\n" $cnt;# WA了就跳出
         exit
     fi

 done

(旧)代码:

 #!/bin/bash

 clear;      # 清屏
 read -p "输入被测源代码名称(不含拓展名):" a   # a就是待测代码名称
 read -p "输入正确源代码名称(不含拓展名):" b   # b是暴力/AC代码名称
 read -p "输入生成器代码名称(不含拓展名):" c   # 数据生成器,一组即可,需要随机

 # 以下进行编译三份代码
 gcc $a.cpp -o $a -Wall -lm --static -DONLINE_JUDGE;
 gcc $b.cpp -o $b -Wall -lm --static -DONLINE_JUDGE;
 gcc $c.cpp -o $c -Wall -lm --static -DONLINE_JUDGE;

 # 不会被一闪而过的AC盖掉编译信息
 read -p 

 # 开始对拍
 while true; do
     ./$c>$c.in
     ./$a<$c.in>$a.out
     ./$b<$c.in>$b.out

     if diff $a.out $b.out; then
         printf "AC\n"   # 如此,一直正确就会无限输出AC
     else
         echo "WA"       # WA了就跳出
         cat $a.out $b.out
         exit
     fi

 done

上一版本

备用。

Linux下对拍脚本的更多相关文章

  1. Linux下对拍脚本与随机数生成器

    对拍脚本 新建一个文档 check.sh 作为对拍脚本. #!/bin/bash while(true)do #死循环 ./data > .in #运行数据生成器,将数据输出到1.in ./st ...

  2. Linux下定时执行脚本(转自Decode360)

    文章来自:http://www.blogjava.net/decode360/archive/2009/09/18/287743.html Decode360's Blog  老师(业精于勤而荒于嬉 ...

  3. Linux下添加shell脚本使得nginx日志每天定时切割压缩

    Linux下添加shell脚本使得nginx日志每天定时切割压缩一 简介 对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大 这时,无论是出现异常 ...

  4. linux下实现shell脚本自动连接mongodb数据库并创建索引

    在linux下创建shell脚本

  5. 实用脚本 2 -- Linux下定时执行脚本

    今天学习Linux下定时执行脚本,看到一篇讲解比较好的文章,特此拿来分享. 原文链接:http://www.blogjava.net/decode360/archive/2009/09/18/2877 ...

  6. Linux下kill进程脚本

    Linux下kill进程脚本 在Linux有时会遇到需要kill同一个程序的进程,然而这个程序有多个进程,一一列举很是繁琐,使用按名字检索,统一kill Perl脚本 使用方法 kill_all.pl ...

  7. Linux下shell通用脚本启动jar(微服务)

    Linux下shell通用脚本启动jar(微服务) vim app_jar.sh #!/bin/bash #source /etc/profile # Auth:Liucx # Please chan ...

  8. linux 下shell 编写脚本

    linux 下shell 编写脚本: 1.程序结构练习:编写一个脚本,给定一个正整数,计算出这个数所有位的数字之和. 例如:程序给定输入123,那么应该返回1+2+3=6. 2.程序结构练习:编写一个 ...

  9. 2019.11.13课堂实验之用Linux下的shell脚本完成两文本交替输出

    有两个文本如下,实际中并不知道两文本各有多少行: 文本1.txt aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ccccccccccccccccccccccccccc ...

随机推荐

  1. 《JavaScript 实战》:JavaScript 图片滑动切换效果

    看到alibaba的一个图片切换效果,感觉不错,想拿来用用.但代码一大堆的,看着昏,还是自己来吧.由于有了做图片滑动展示效果的经验,做这个就容易得多了. 效果预览 仿淘宝/alibaba图片切换: 默 ...

  2. Shodan 使用

    本文来自:Shodan新手入坑指南, 记录简要用法,以便使用. 文章先给出搜索过滤方法,然后再简单介绍两种使用shodan的方法:使用命令和编写代码. 搜索过滤 hostname:搜索指定的主机或域名 ...

  3. 打表找规律C - Insertion Sort Gym - 101955C

    题目链接:https://cn.vjudge.net/contest/273377#problem/C 给你 n,m,k. 这个题的意思是给你n个数,在对前m项的基础上排序的情况下,问你满足递增子序列 ...

  4. 64_p6

    polkit-kde-5.10.1-1.fc26.x86_64.rpm 12-Jun-2017 13:45 84854 polkit-libs-0.113-8.fc26.i686.rpm 13-Apr ...

  5. Swift中的指针类型

    Swift编程语言为了能与Objective-C与C语言兼容,而引入了指针类型.尽管官方不建议频繁使用指针类型,但很多时候,使用指针能完成更多.更灵活的任务.比如,我们要实现一个交换两个整数值的函数的 ...

  6. centos7-sar工具的安装过程及其简单应用

    一.sar工具安装 1.进入yum配置文件目录: cd /etc/yum.repos.d/ 2.vi CentOS-Base.repo命令创建文件CentOS-Base.repo 文件内容见网页:ht ...

  7. php7.33 configure

    To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for desc ...

  8. Crypt加密函数简介(C语言)

    定义函数 char * crypt (const char *key,const char * salt); 函数说明 crypt是个密码加密函数,它是基于Data Encryption Standa ...

  9. reverse和reverse_copy函数的应用

    reverse函数的作用是:反转一个容器内元素的顺序.函数参数:reverse(first,last);//first为容器的首迭代器,last为容器的末迭代器.它没有任何返回值. 这个函数比较简单, ...

  10. linux中使用vim编译C++程序

    Vi三种模式详解 命令行模式 (command mode/一般模式) 任何时候,不管用户处于何种模式,只要按一下“ESC”键,即可使Vi进入命令行模式:我们在shell环境(提示符为$)下输入启动Vi ...