目录

  • 前言
  • 介绍
  • 代码加入时流程
  • 代码
    • 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 测试数据的名字。将如testnametest,而且要生成 3 个,那么生成的输入数据名字为test1.in test2.in test3.in。运行完,生成的文件都会在该文件夹下。

mktout

可以批量生产输出数据(和 mktin 大概相似)。

mktout [-b] [-m number] [bl] [testname]

生成出的文件后缀名为.ans

mkt

可以批量生产输入和输出数据(把上面的两个结合)。

mkt [-b] [-m number] [sjsc] [bl] [testname]

注意sjscbl顺序不可以颠倒,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 numbernumber可以是小数,它代表多少秒。比如一行是time 1.5,那么时间限制是1.5s

2.评测程序

对于一些特殊的题目可能需要不同的评测程序,在没有其他设定时,tote默认以每个字符串是否相等作为判断(适用于大部分题目),它不会在意两个字符串之间的是空格还是换行符。比如下面两个就是相等的。

10 2 1
10
2 1

假如要设定其他的评测程序,可以在pb文件加一行check filenamefilename是评测程序,它必须是已经编译完的。

在编写评测程序要注意,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命令行工具(自创的)相关推荐

  1. Redis 笔记(16)— info 指令和命令行工具(查看内存、状态、客户端连接数、监控服务器、扫描大key、采样服务器、执行批量命令等)

    Info 命令返回关于 Redis 服务器的各种信息和统计数值.通过给定可选的参数 section ,可以让命令只返回某一部分的信息. 1. 显示模块 server : 一般 Redis 服务器信息, ...

  2. ATS中的命令行工具解读

    下面是几个常用命令行工具,先截图,再描述 在生成环境调试的命令 sudo gdb ./traffic_server -p $(pidof traffic_server)  -batch  -x  [m ...

  3. 在vc6控制台程序中如何调用运行ImageMagick命令行工具

    在http://www.imagemagick.org/script/index.php网站下载相应的执行文件,这里以下载ImageMagick-6.6.5-10-Q16-windows-static ...

  4. 如何运行ImageMagick的命令行工具

    在http://www.imagemagick.org/script/index.php网站下载相应的执行文件,这里以下载ImageMagick-6.6.5-10-Q16-windows-static ...

  5. 构建现代化的命令行工具

    文章源于 lambdas.dev 每当我们想要创建一个基于 NodeJS 的命令行工具时,就会衍生出一堆问题需要解决,比如如何准备开发环境,如何打包转译代码,如何使代码在转译后保持可调用的状态同时尽可 ...

  6. WinCE中命令行工具Viewbin简介(查看nk.bin中包含的文件)

    Viewbin是微软提供的一个命令行工具,在WinCE5.0和WinCE6.0中,可以在"/WINCE600/PUBLIC/COMMON/OAK/BIN/I386"找到他.View ...

  7. 懒人神器 !一个创意十足的 Python 命令行工具

    作者 | 写代码的明哥 来源 | Python编程时光 当听到某些人说 xx 库非常好用的时候,我们总是忍不住想要去亲自试试. 有一些库,之所以好用,是对一些库做了更高级的封闭,你装了这个库,就会附带 ...

  8. GitHub日收12000星,微软新命令行工具引爆程序员圈!

    作者 | 伍杏玲 出品 | CSDN(ID:CSDNnews) 继上次微软开源计算器刷爆GitHub后,今天凌晨在微软Build大会登场的Windows Terminal,如旋风般目前已登顶GitHu ...

  9. 一天1300 Star量,GitHub上新官方命令行工具

    机器之心 机器之心编辑部 不想用命令行操作 GitHub 的开发者,不是好的开发者. Git简介 小编私以为,Git 是世界上最好的代码版本控制工具,木有之一.在做项目的时候,通常我们会在本地写代码, ...

最新文章

  1. 关于如何发现忠诚的下属的讨论
  2. python 文件末尾增加内容_java追加内容到文件末尾
  3. greenplum(一)
  4. python opencv3 轮廓检测
  5. 社区发现 实践_实践社区可以为您的组织做什么
  6. 华为张顺茂:迎接拐点,拥抱计算新架构
  7. 贵州大学考博计算机学院官网,贵州大学研究生院
  8. HDU 2157 How many ways??
  9. cad汉仪长仿宋体_长仿宋体字体下载 cad工程机械绘图工程制图国标字体下载
  10. SDN是什么,与传统分布式网络有什么区别
  11. 附件上传后台报The field uploadFile exceeds its maximum permitted size of 1048576 bytes.
  12. python+selenium 定位元素踩过的坑
  13. 中美计算机软件著作权登记差异与比较
  14. Period、Duration计算时间间隔
  15. linux查看目录是不是btrfs,Linux 文件系统Btrfs 的Kconfig分析
  16. 有毒气体传感器代替金丝雀和老鼠在矿山
  17. 创建maven【聚合工程】
  18. 和跨域CORS有关的几个请求头和响应头请求头
  19. python绘制图形沙漏_sandglass(沙漏)——一个让人解脱的python时间处理库
  20. 零基础零经验自学Python,到精通Python要多久啊?

热门文章

  1. 基于BCNN的汽车车型识别研究
  2. Java集成Hutool实现导出Excel功能
  3. 一楼到十楼的每层电梯门口都放着一颗钻石,钻石大小不一。你乘坐电梯从一楼到十楼,每层楼电梯门都会打开一次,只能拿一次钻石,问怎样才能拿到最大的一颗?
  4. 北京大学C语言学习第三天
  5. 芯片短缺困局难解汽车巨头被迫停工减产---道合顺大数据
  6. 记录一下在云服务器上配置MYSQL主从。
  7. 无线网技术——知识点
  8. 在线编辑、在线预览、在线转换,基于wps.js + java + react / vue,无需任何插件,零安装
  9. python爬取自如房间信息(二)
  10. Rerun the EDA Netlist Writer