使用说明:
        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. c语言中使用自带的qsort(结构体排序)+ 快排

    c中没有自带的sort函数emm 不过有自带的qsort函数 (其实用法都差不多(只是我经常以为c中有sort 头文件要用 #include <stdlib.h> 一定要重新把指针指向的值 ...

  2. 【计蒜客】是男人就过 8 题--Pony.AI 题 A. A String Game 后缀自动机+SG函数

    [题目]A. A String Game [题意]给定目标串S和n个子串Ti,Alice和Bob轮流选择一个子串操作,必须且只能在子串末尾添加一个字符使得新串也是S的子串,不能操作即输,求胜利者.|S ...

  3. ActiveMQ笔记之安装(Linux)

    1. 基本概念 MQ(MessageQueue),消息队列,是一个消息接收和转发的容器. Apache ActiveMQ是一个JMS Provider实现. 2. 安装 从官网下载安装包: wget ...

  4. select count(*) from user注入

    先来看一条sql语句: mysql; +------+----------+----------+------------+ | id | username | password | flag | + ...

  5. MongoDB之conf配置文件详解(五)

    详细看一下mongodb配置文件. mongodb.conf # mongodb.conf # 数据库文件位置 dbpath=/var/lib/mongodb #日志文件的路径 logpath=/va ...

  6. go语言基本介绍

    Golang发展历史 1. 诞生历史a. 诞生与2006年1月2号下午15点4分5秒b. 2009发布并正式开源c. 2012年第一个正式版本Go 1.0发布d. 截至到2017年8月24号Go 1. ...

  7. spring web 生命周期理解

    spring web /bean 生命周期 反射注解 aop代理类生成 init servlet  初始化 load spring-context.xml load XmlParser 类解析对象   ...

  8. Mysql 中 char 、varchar 、text的区别

    首先它们的存储方式和数据的检索方式都不一样.数据的检索效率是:char > varchar > text 空间占用方面,就要具体情况具体分析了. char:存储定长数据很方便,CHAR字段 ...

  9. C基础 time.h 简单思路扩展

    前言 - time 简单需求 时间业务相关代码. 基本属于框架的最底层. 涉及的变动都很小. 以前参与游戏研发时候, 这方面需求不少, 各种被策划花式吊打. 转行开发互联网服务之后很少遇到这方面需求. ...

  10. docker简单介绍(资料收集总结)

    [前言] 首先,感谢我的leader总是会问我很多技术的基本资料,让我这个本来对于各种技术只知道操作命令不关注理论知识的人,开始重视理论资料. 关于docker的操作步骤等等,都是之前学习的,现在补上 ...