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 ...
随机推荐
- ELK 企业内部日志分析系统
生产环境配置 亿级规模,建议64G内存+8核CPU ES JVM占用一半内存 生产环境的3节点的集群 https://blog.csdn.net/xuduorui/article/details/79 ...
- Shiro实战教程(二)
http://www.jianshu.com/p/6786ddf54582/ https://www.cnblogs.com/ealenxie/p/10610741.html
- Lua的各种资源1
Libraries And Bindings LuaDirectory > LuaAddons > LibrariesAndBindings This is a list of l ...
- 4-Python数据类型之元组-字符串
目录 1 元组概念 1.1 元祖的特点 1.2 元组的定义 1.3 元组的访问 1.4 元组的查询 2 命名元组 3 字符串 3.1 字符串的基本操作 3.1.1 字符串的访问 3.1.2 字符串的拼 ...
- kvm 简单了解
网络: *主机(装有ESX的PC服务器)简称host,虚拟机简称guest *Host的一个或多个网卡组成一个虚拟交换机,虚拟交换机上创建端口组label,端口组指定vlan tag,虚拟机指定网络标 ...
- mysqldump 逻辑备份的正确方法【转】
1. 利用mysqldump进行逻辑备份 1)全逻辑备份: mysqldump -uxxx -p --flush-logs --delete-master-logs --all-databases & ...
- Android 反编译神器jadx的使用
一.前言 今天介绍一个非常好用的反编译的工具 jadx .jadx 的功能非常的强大,对我而言,基本上满足日常反编译需求. jadx 优点: 图形化的界面. 拖拽式的操作. 反编译输出 Java 代码 ...
- 安装sudo apt-get install ros-kinetic-desktop-full,报错mv: 无法获取'/var/lib/ni/licenses.xml.dpkg-old' 的文件状态(stat): 没有。。。。
安装sudo apt-get install ros-kinetic-desktop-full,报了一堆错误 mv: 无法获取'/var/lib/ni/licenses.xml.dpkg-old' 的 ...
- Oracle 序列(sequence)的创建、修改及删除
1.Oracle 创建序列化:create sequence xxxx create sequence student_id minvalue --最小值 nomaxvalue --不设置最大值(由机 ...
- CentOS7中开机出现end_request:I/O error,dev fd0,sector 0的解决办法
https://blog.csdn.net/wangjinyang_123/article/details/40583635