好用的oier命令行工具(自创的)
目录
- 前言
- 介绍
- 代码加入时流程
- 代码
- pr_test(shell)
- mkt(shell)
- mktin(shell)
- mktout(shell)
- tote(shell)
- time_test(shell)
- tote_every.cpp(c++)
- tote_test.cpp(c++)
- teeq.cpp(c++)
- 最后一步
- 教程
- mktin
- mktout
- mkt
- tote
- 1.时间限制
- 2.评测程序
- 3.输出结果
- 结语
- Updated
贡献者:noipAK
前言
以前发现,在写完代码后,用样例测试时要一个一个输非常麻烦。后来我学会了文件 I/O 重定向(命令行的),但又发现一个问题,在数据非常多的时间,又要一个一个打,感觉还是很麻烦。再后来我知道了单板评测机,不过是 GUI 界面,一点都不上手。
我想了又想,觉得还不如自己搞一个呢。我就自己搞了一个。
介绍
注:这是 linux 系统下才能用的。
这里面有用 shell 脚本编写的,也有用 C++ 编写的。本人非常弱,所以做出来的非常简陋。在用或看下面内容时,你要会linux
下的命令行,假如不会,可以先去网上学一下一些基础的东西。
代码加入时流程
下面会列出几个代码,你要把这些东西弄到自己的电脑上。在~
文件夹下建一个文件夹,建议文件夹的名字是cmd_make
(一会儿会用到)。每个代码的标题(不要括号里的内容),是它的文件名,把代码放在它对应的文件里面,文件放在cmd_make
目录下。标题有个括号,括号里假如是 shell,则它是 shell 脚本。假如是 C++,那么它是 C++ 源代码。
对于每个代码(先把它放在cmd_make
目录下):
- shell:假如它的名字是
filename
,那么执行chmod u+x filename
。 - C++:假如它的名字是
filename.cpp
,那么执行g++ filename.cpp -o filename
。
代码
pr_test(shell)
代码
mkt(shell)
代码
mktin(shell)
代码
mktout(shell)
代码
tote(shell)
代码
time_test(shell)
代码
tote_every.cpp(c++)
代码
tote_test.cpp(c++)
代码
teeq.cpp(c++)
代码
最后一步
现在要启动里面任何一个程序,都要出现目录才行,要想要像mkdir
这样,不用描述其他东西就可以启动多好呀。
打开~/.bashrc
文件,在最后一行加入PATH=$PATH:$HOME/cmd_make
。
做完后,你的cmd_make
文件下应该会有上面的图中这些东西。
教程
其中有一些程序是辅助其他程序的,可以不用管。
本人很弱,程序有一些漏洞,在使用命令时,选项要放在命令后,其他参数前。
这些都是关于作题的,要把所有关于这道题的文件放在一个文件夹下,使用它们时,注意命令行需要在这个文件夹下面。
mktin
可以批量生产输入数据。
mktin [-b] [-m number] [sjsc] [testname]
-b 代表后面的 sjsc 还没编译,用
g++
编译一下,不加-b
代表 sjsc 已经编译完了。
-m 后面有个
number
。代表生产number
个,假如不加,默认只生产一个。
sjsc 文件名,数据生成器。假如是
c++
源码,需要在前面加-b
。
testname 测试数据的名字。将如
testname
是test
,而且要生成 3 个,那么生成的输入数据名字为test1.in test2.in test3.in
。运行完,生成的文件都会在该文件夹下。
mktout
可以批量生产输出数据(和 mktin 大概相似)。
mktout [-b] [-m number] [bl] [testname]
生成出的文件后缀名为
.ans
。
mkt
可以批量生产输入和输出数据(把上面的两个结合)。
mkt [-b] [-m number] [sjsc] [bl] [testname]
注意
sjsc
和bl
顺序不可以颠倒,sjsc
是数据生成器,bl
是暴力程序。生成的数据有输入数据也有输出数据。比如命令为mkt sc pr test
,会使用sc
程序生成一个名为test1.in
的输入数据,在用它当pr
的输入,输出结果为test1.ans
。
tote
可以评测代码。
tote [-b] …
-b 有
-b
代表后面的文件都是cpp
源代码
… 是填文件的,填多少个都行。
tote
运行时会对这些代码用当前文件下的评测数据(.in 和 .ans)进行评测。
1.时间限制
在没有任何设置时,
tote
会默认时间限制是1s
。想设定其他的时间限制,可以打开当前文件夹下的pb
文件(没有的话,就自己建一个),假如一行time number
,number
可以是小数,它代表多少秒。比如一行是time 1.5
,那么时间限制是1.5s
。
2.评测程序
对于一些特殊的题目可能需要不同的评测程序,在没有其他设定时,
tote
默认以每个字符串是否相等作为判断(适用于大部分题目),它不会在意两个字符串之间的是空格还是换行符。比如下面两个就是相等的。10 2 1
10 2 1
假如要设定其他的评测程序,可以在
pb
文件加一行check filename
,filename
是评测程序,它必须是已经编译完的。在编写评测程序要注意,
tote
在调用它,会把被评测程序输出结果放在out.out
,把输出数据放在ans.ans
。
3.输出结果
这是运行tote
输出的结果。对于每个被评测的程序,会输出一个filename's test
,然后再让它用每个评测数据进行评测。每个评测结果会先显示这个数据的名字,后面是评测结果(当前的评测结果只有 AC,WA,TLE),再后面是时间(因为我写的是 A+B problem 的代码,所以时间是 0),时间的评测的误差可能会达到0.01
(亲自尝试了一下)。
结语
假如你想贡献此项目(增加命令,维护命令,优化命令等),可以找noipAK,欢迎大家参与贡献。
Updated
- 2022.11.13 更改了一下文章布局
好用的oier命令行工具(自创的)相关推荐
- Redis 笔记(16)— info 指令和命令行工具(查看内存、状态、客户端连接数、监控服务器、扫描大key、采样服务器、执行批量命令等)
Info 命令返回关于 Redis 服务器的各种信息和统计数值.通过给定可选的参数 section ,可以让命令只返回某一部分的信息. 1. 显示模块 server : 一般 Redis 服务器信息, ...
- ATS中的命令行工具解读
下面是几个常用命令行工具,先截图,再描述 在生成环境调试的命令 sudo gdb ./traffic_server -p $(pidof traffic_server) -batch -x [m ...
- 在vc6控制台程序中如何调用运行ImageMagick命令行工具
在http://www.imagemagick.org/script/index.php网站下载相应的执行文件,这里以下载ImageMagick-6.6.5-10-Q16-windows-static ...
- 如何运行ImageMagick的命令行工具
在http://www.imagemagick.org/script/index.php网站下载相应的执行文件,这里以下载ImageMagick-6.6.5-10-Q16-windows-static ...
- 构建现代化的命令行工具
文章源于 lambdas.dev 每当我们想要创建一个基于 NodeJS 的命令行工具时,就会衍生出一堆问题需要解决,比如如何准备开发环境,如何打包转译代码,如何使代码在转译后保持可调用的状态同时尽可 ...
- WinCE中命令行工具Viewbin简介(查看nk.bin中包含的文件)
Viewbin是微软提供的一个命令行工具,在WinCE5.0和WinCE6.0中,可以在"/WINCE600/PUBLIC/COMMON/OAK/BIN/I386"找到他.View ...
- 懒人神器 !一个创意十足的 Python 命令行工具
作者 | 写代码的明哥 来源 | Python编程时光 当听到某些人说 xx 库非常好用的时候,我们总是忍不住想要去亲自试试. 有一些库,之所以好用,是对一些库做了更高级的封闭,你装了这个库,就会附带 ...
- GitHub日收12000星,微软新命令行工具引爆程序员圈!
作者 | 伍杏玲 出品 | CSDN(ID:CSDNnews) 继上次微软开源计算器刷爆GitHub后,今天凌晨在微软Build大会登场的Windows Terminal,如旋风般目前已登顶GitHu ...
- 一天1300 Star量,GitHub上新官方命令行工具
机器之心 机器之心编辑部 不想用命令行操作 GitHub 的开发者,不是好的开发者. Git简介 小编私以为,Git 是世界上最好的代码版本控制工具,木有之一.在做项目的时候,通常我们会在本地写代码, ...
最新文章
- 关于如何发现忠诚的下属的讨论
- python 文件末尾增加内容_java追加内容到文件末尾
- greenplum(一)
- python opencv3 轮廓检测
- 社区发现 实践_实践社区可以为您的组织做什么
- 华为张顺茂:迎接拐点,拥抱计算新架构
- 贵州大学考博计算机学院官网,贵州大学研究生院
- HDU 2157 How many ways??
- cad汉仪长仿宋体_长仿宋体字体下载 cad工程机械绘图工程制图国标字体下载
- SDN是什么,与传统分布式网络有什么区别
- 附件上传后台报The field uploadFile exceeds its maximum permitted size of 1048576 bytes.
- python+selenium 定位元素踩过的坑
- 中美计算机软件著作权登记差异与比较
- Period、Duration计算时间间隔
- linux查看目录是不是btrfs,Linux 文件系统Btrfs 的Kconfig分析
- 有毒气体传感器代替金丝雀和老鼠在矿山
- 创建maven【聚合工程】
- 和跨域CORS有关的几个请求头和响应头请求头
- python绘制图形沙漏_sandglass(沙漏)——一个让人解脱的python时间处理库
- 零基础零经验自学Python,到精通Python要多久啊?
热门文章
- 基于BCNN的汽车车型识别研究
- Java集成Hutool实现导出Excel功能
- 一楼到十楼的每层电梯门口都放着一颗钻石,钻石大小不一。你乘坐电梯从一楼到十楼,每层楼电梯门都会打开一次,只能拿一次钻石,问怎样才能拿到最大的一颗?
- 北京大学C语言学习第三天
- 芯片短缺困局难解汽车巨头被迫停工减产---道合顺大数据
- 记录一下在云服务器上配置MYSQL主从。
- 无线网技术——知识点
- 在线编辑、在线预览、在线转换,基于wps.js + java + react / vue,无需任何插件,零安装
- python爬取自如房间信息(二)
- Rerun the EDA Netlist Writer