谁适合看这篇文章?

  ACMERS,OIERS或其它参加算法竞赛或需要算法的人

  对操作系统并不太熟悉的人

  不会写对拍的人

  在网上找不到一个特别详细的对拍样例的人

  不嫌弃我写的太低幼的人

前言

在NOIP或是ACM比赛中,一个对拍程序的重要性不言而喻,再有一个效率较低的正确程序下(这是大前提,如果你连一个绝对正确的程序都无法保证的话,那还是不要考虑对拍了),他可以检验你的“高级算法”是不是正确。当然,正确性是完全无法保证的。一般对拍都会用随机函数生成数据,边界条件极限条件极有可能遇不上,也会有很多对拍程序NP交上去WA的情况。但对拍的效率是毋庸置疑的,他有很大的几率检查出你的程序中的错误,或许能多得上不少分。从数学期望角度来讲,对拍还是很划算的。

配置

电脑系统:Windows XP

PASCAL编译器:Free Pascal 2.4.0

过程

我们以a+b问题为例:

首先你要写一个完全正确的程序

a.pas

然后你要写一个不一定完全正确的程序

b.pas

(当然,由加法交换律可知这个程序也完全正确)

数据生成器也是需要我们自己写的

maker.pas

这里只需要写出一组数据的生成就可以了,不用去做下面这样的东西,这样反而会让对拍无法进行,聪明的系统会一遍一遍的调用你的数据生成器的。

while true do
begin
randomize;
write(random(maxint));
end;

再编译程序,可以不去运行。

(虽然我知道几乎没有人会这么干,不过我还是想提一句,一定要编译程序啊亲!)

然后我们右键桌面上IDE的快捷方式,打开属性:

点击查找图标,到了这样一个文件夹:

为了方便查找,我们可以按修改时间排序,"xx.pas"是我们的源码,但这不是我们想要的,“xx.exe”才是我们的目标,于是我们把用蓝线标注的三个exe文件取出来,单独放到一个地方。

接着是关键的一步,我们需要一个什么东西实现这个对拍功能。

当当当当!某bat文件闪亮登场:它把数据生成器和你的两个程序集合在一起,有机的做到比较%……&&……¥%#¥%#¥@%#¥

好,我们新建一个txt文件(其实什么文件都行,有后缀名不是文件夹什么的就行),把它改成"xx.bat"这样的格式,bat是文件后缀,然后用记事本打开,在里面输入

:loop
maker.exe
a.exe
b.exe
fc out.txt out.txt
if errorlevel 1 goto end
goto loop
:end

这是DOS语言,意思差不多是这样的:

loop//循环
maker.exe//运行 数据生成器
a.exe//运行 正确程序
b.exe//运行 待检测程序
fc o1.txt o2.txt//比较 两个程序的输出结果
if errorlevel 1 goto end//如果 有错误(两个输出文件不一样) 就跳到end

goto loop//跳到loop
:end

就像这样:

我们把bat哥和那三个exe拉到一块,就F盘吧

都准备好了,怎么运行呢?

点开你的开始菜单,打开运行,输入cmd后点确定

(PS:cmd命令提示符可是程序猿必备神器,不会cmd都不好意思出门了)

把当前处理位置移到你放对拍程序的地方,输入你的对拍程序名

按下回车,看你的程序“哗哗哗”的运行就好了

诶?怎么没有结果,我怎么知道对不对?

不对人家会停止的,如果程序一直在跑还想查看结果的话可以右键

找不到,相异处,两个程序结果吻合,OK了。

(一个A+B吻合有什么软用吗o(╯□╰)o)

PS:

1.程序检测的是执行程序,而不是源程序。所以每改一次源程序都要编译一次。

2.dos中不识别 .in .out 文件,所以要用 .txt

3.衷心希望这篇文章能对大家有所帮助,谢谢。

[zt]手把手教你写对拍程序(PASCAL)的更多相关文章

  1. 手把手教你写对拍程序(PASCAL)

    谁适合看这篇文章? ACMERS,OIERS或其它参加算法竞赛或需要算法的人 对操作系统并不太熟悉的人 不会写对拍的人 在网上找不到一个特别详细的对拍样例的人 不嫌弃我写的太低幼的人 前言 在NOIP ...

  2. 手把手教你写Kafka Streams程序

    本文从以下四个方面手把手教你写Kafka Streams程序: 一. 设置Maven项目 二. 编写第一个Streams应用程序:Pipe 三. 编写第二个Streams应用程序:Line Split ...

  3. 手把手教你写LKM rookit! 之 第一个lkm程序及模块隐藏(一)

    唉,一开始在纠结起个什么名字,感觉名字常常的很装逼,于是起了个这<手把手教你写LKM rookit> 我觉得: 你们觉得:...... 开始之前,我们先来理解一句话:一切的操作都是系统调用 ...

  4. 手把手教你写Sublime中的Snippet

    手把手教你写Sublime中的Snippet Sublime Text号称最性感的编辑器, 并且越来越多人使用, 美观, 高效 关于如何使用Sublime text可以参考我的另一篇文章, 相信你会喜 ...

  5. 只有20行Javascript代码!手把手教你写一个页面模板引擎

    http://www.toobug.net/article/how_to_design_front_end_template_engine.html http://barretlee.com/webs ...

  6. [原创]手把手教你写网络爬虫(5):PhantomJS实战

    手把手教你写网络爬虫(5) 作者:拓海 摘要:从零开始写爬虫,初学者的速成指南! 封面: 大家好!从今天开始,我要与大家一起打造一个属于我们自己的分布式爬虫平台,同时也会对涉及到的技术进行详细介绍.大 ...

  7. 网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接

    本文原作者:“水晶虾饺”,原文由“玉刚说”写作平台提供写作赞助,原文版权归“玉刚说”微信公众号所有,即时通讯网收录时有改动. 1.引言 好多小白初次接触即时通讯(比如:IM或者消息推送应用)时,总是不 ...

  8. 手把手教你写DI_3_小白徒手支持 `Singleton` 和 `Scoped` 生命周期

    手把手教你写DI_3_小白徒手支持 Singleton 和 Scoped 生命周期 在上一节:手把手教你写DI_2_小白徒手撸构造函数注入 浑身绷带的小白同学:我们继续开展我们的工作,大家都知道 Si ...

  9. 手把手教你写DI_0_DI是什么?

    DI是什么? Dependency Injection 常常简称为:DI. 它是实现控制反转(Inversion of Control – IoC)的一个模式. fowler 大大大神 "几 ...

随机推荐

  1. JQuery制作网页——第五章 初识 jQuery

    1.jQuery简介: ● jQuery由美国人John Resig于2006年创建 ● jQuery是目前最流行的JavaScript程序库,它是对JavaScript对象和函数的封装 ● 它的设计 ...

  2. try catch finally 中 returne的执行顺序

    结论:1.不管有没有出现异常,finally块中代码都会执行:2.当try和catch中有return时,finally仍然会执行:3.finally是在return后面的表达式运算后执行的(此时并没 ...

  3. Python3简单登录接口编写及遇到的问题分享

    1.程序目标 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 2.思路 利用python中的pickle模块,实现用户登录信息(采用dict)和被锁定用户信息(采用list)的存储.所以我预先 ...

  4. MFC非模态添加进程控件方法二(自定义消息方法)

    以下内容有大部分转载自CSDN,经过自己整理完成. 该文主要的方法为在非模态对话框中自定义一组消息函数,然后在主窗口中开辟一个线程通过线程把消息传递给子窗口进行更新. 在子窗口类中定义消息如下: /* ...

  5. kali aquatone安装

    https://www.jianshu.com/p/418eedb9d9c8

  6. ggplot2画简单的heatmap

    gg_heatmap gg_heatmap PeRl ggplot2 heatmap 偶然的机会,发现ggplot2画的heatmap也挺好看的,除了不能画出聚类树来(手动滑稽). 随意新建了两个矩阵 ...

  7. Making AJAX Applications Crawlable

    https://developers.google.com/webmasters/ajax-crawling/

  8. 【NAS】NFS中的fsid如何理解

    最近在NAS项目中遇到对NFS的fsid有点疑惑.就深入了解一番 在nfs的配置文件/etc/exports中,fsid作为一个共享参数,具体含义如下: 格式: fsid=num|root|uuid ...

  9. vue中开发webSocket

    先安装 sockjs-client 和 stompjs npm install sockjs-client npm install stompjs <template> <div&g ...

  10. 必读的 Android 文章

    必读的 Android 文章 掘金官方 关注 2017.06.07 13:58* 字数 25218 阅读 8782评论 2喜欢 218 写给 Android 开发者的混淆使用手册 - Android ...