Linux下对拍脚本
使用说明:
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下对拍脚本的更多相关文章
- Linux下对拍脚本与随机数生成器
对拍脚本 新建一个文档 check.sh 作为对拍脚本. #!/bin/bash while(true)do #死循环 ./data > .in #运行数据生成器,将数据输出到1.in ./st ...
- Linux下定时执行脚本(转自Decode360)
文章来自:http://www.blogjava.net/decode360/archive/2009/09/18/287743.html Decode360's Blog 老师(业精于勤而荒于嬉 ...
- Linux下添加shell脚本使得nginx日志每天定时切割压缩
Linux下添加shell脚本使得nginx日志每天定时切割压缩一 简介 对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大 这时,无论是出现异常 ...
- linux下实现shell脚本自动连接mongodb数据库并创建索引
在linux下创建shell脚本
- 实用脚本 2 -- Linux下定时执行脚本
今天学习Linux下定时执行脚本,看到一篇讲解比较好的文章,特此拿来分享. 原文链接:http://www.blogjava.net/decode360/archive/2009/09/18/2877 ...
- Linux下kill进程脚本
Linux下kill进程脚本 在Linux有时会遇到需要kill同一个程序的进程,然而这个程序有多个进程,一一列举很是繁琐,使用按名字检索,统一kill Perl脚本 使用方法 kill_all.pl ...
- Linux下shell通用脚本启动jar(微服务)
Linux下shell通用脚本启动jar(微服务) vim app_jar.sh #!/bin/bash #source /etc/profile # Auth:Liucx # Please chan ...
- linux 下shell 编写脚本
linux 下shell 编写脚本: 1.程序结构练习:编写一个脚本,给定一个正整数,计算出这个数所有位的数字之和. 例如:程序给定输入123,那么应该返回1+2+3=6. 2.程序结构练习:编写一个 ...
- 2019.11.13课堂实验之用Linux下的shell脚本完成两文本交替输出
有两个文本如下,实际中并不知道两文本各有多少行: 文本1.txt aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ccccccccccccccccccccccccccc ...
随机推荐
- java多线程机制2(安全问题)
线程状态图: ================================================================================= /* * 线程安全问题 ...
- 【洛谷P2015】二叉苹果树
题目描述 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 我们用一根树枝两端连接的结点的编号来 ...
- 重载jquery on方法实现click事件在移动端的快速响应
额,这个标题取的还真是挺装的... 其实我想表达的是jquery click事件如何在移动端自动转换成touchstart事件. 因为移动端click事件会比touchstart事件慢几拍 移动设备某 ...
- Linux终端提示符PS1设置(颜色)
\d :代表日期,格式为weekday month date,例如:"Mon Aug 1"\H :完整的主机名称.例如:我的机器名称为:fc4.linux,则这个名称就是fc4.l ...
- MySQL-索引工作原理及使用注意事项
1.为什么需要索引(Why is it needed)? 当数据保存在磁盘类存储介质上时,它是作为数据块存放.这些数据块是被当作一个整体来访问的,这样可以保证操作的原子性.硬盘数据块存储结构类似于链表 ...
- C/C++——二维数组与指针、指针数组、数组指针(行指针)、二级指针的用法
本文转载自:https://blog.csdn.net/qq_33573235/article/details/79530792 1. 二维数组和指针 要用指针处理二维数组,首先要解决从存储的角度对二 ...
- PostGIS 操作geometry方法
WKT定义几何对象格式: POINT(0 0) ——点 LINESTRING(0 0,1 1,1 2) ——线 POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2 ...
- 使用Guava retryer优雅的实现接口重试机制
转载自: 使用Guava retrying优雅的实现接口重调机制 Guava retrying:基于 guava 的重试组件 实际项目中,为了考虑网络抖动,加锁并发冲突等场景,我们经常需要对异常操作进 ...
- (转)Opencv卷积操作
转自:http://www.2cto.com/kf/201312/267308.html Mask Operation filter2D函数 Last Edit 2013/12/24 所谓的Mask ...
- mongodb卸载再重装
标题就凸显了尴尬,是的,本地(ubuntu16.04)自带的mongodb太老了,想要装最新版的 卸载: sudo dpkg -P mongodb 然后下载新版的mongodb: https://m ...