在Linux or Windows中如何优雅的写出对拍

在Linux or Windows中如何优雅的写出对拍

  • 一、前言
  • 二、结论
    • 1、对拍
  • 三、对拍详解
    • 1、什么是对拍呢?🧐
    • 2、对拍的组成部分
    • 3、输入数据生成
    • 4、对拍程序
    • 5、操作流程
  • 四、最后

一、前言

网上的对拍程序层出不穷,大多LinuxWindows中的对拍程序都是独立开的(在Windows中用.bat,在Linux中用.sh),那么有没有一种方法使之统一起来呢?🤔答案是有的!🥳

二、结论

对于有基础的同学直接看结论就行了。用Cppsystem()函数调用系统命令,来写对拍程序就可以了。其中记住以下几点就行

  1. Windows中可执行文件后缀名为.exe,Linux中可执行文件后缀名为.out。在对应系统生成对应程序。(这个应该都没问题把🧐)

  2. 对拍的核心就是判断绝对AC的程序与现有程序输出是否一致

    • Linux中使用diff
    • Windows中使用fc

1、对拍

Windows

#include<bits/stdc++.h>
using namespace std;void slove() {while (true) {system("gen.exe > tmp.in");system("F.exe < tmp.in > tmp.out");system("F_AC.exe < tmp.in > tmp_AC.out");if (system("fc tmp.out tmp_AC.out")) {cout << "WA" << endl;return;} else cout << "AC" << endl;}
}signed main(){ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);int t = 1;/*cin >> t;*/while(t--) slove();return 0;
}

Linux

#include<bits/stdc++.h>
using namespace std;void slove() {while (true) {system("gen.out > tmp.in");system("F.out < tmp.in > tmp.out");system("F_AC.out < tmp.in > tmp_AC.out");if (system("diff tmp.out tmp_AC.out")) {cout << "WA" << endl;return;} else cout << "AC" << endl;}
}signed main(){ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);int t = 1;/*cin >> t;*/while(t--) slove();return 0;
}

三、对拍详解

1、什么是对拍呢?🧐

判断绝对AC的程序与现有程序输出是否一致

简单来说,用代码生成 输入数据,再把生成的输入数据分别喂给已知能AC的程序和不确定能AC的程序,找出让这两个程序输出不一致的 输入数据

2、对拍的组成部分

对拍的组成部分

3、输入数据生成

目标:用程序随机自动生成输入数据
做法:用srand() + time()函数生成随机数
注意的点

  • Windowssrand()随机数的范围为0 ~ 32767
  • Linuxsrand()随机数的范围为0 ~ 2147483647
  • 哪我们如果数据范围在 long long怎么办呢?请看我封装的random()函数
#include <bits/stdc++.h>
#define ull unsigned long long
#define ll long long
using namespace std;/*
// random ---> 生成数据范围在[l,r]的随机数
// Linux
ll random(int l, int r) { return (ull)rand() * rand() % (r - l + 1) + l;
}
*/// Windows
ll random(int l, int r) { return (ull)rand() * rand() * rand() * rand() % (r - l + 1) + l;
}void slove() {srand((unsigned)time(0));int n = random(1, 10);cout << n << endl;
}signed main() {ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);int t = 1;/*cin >> t;*/while (t--) slove();return 0;
}

4、对拍程序

基础知识

  • F.exe < tmp.in 代表输入重定向。它的作用是将一个文件的内容作为输入传递另一个程序。
  • Linux中的diffWindows中的fc,代表比较两个文件中的内容是否一致。

Windows

#include<bits/stdc++.h>
using namespace std;void slove() {while (true) {system("gen.exe > tmp.in");system("F.exe < tmp.in > tmp.out");system("F_AC.exe < tmp.in > tmp_AC.out");if (system("fc tmp.out tmp_AC.out")) {cout << "WA" << endl;return;} else cout << "AC" << endl;}
}signed main(){ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);int t = 1;/*cin >> t;*/while(t--) slove();return 0;
}

Linux

#include<bits/stdc++.h>
using namespace std;void slove() {while (true) {system("gen.out > tmp.in");system("F.out < tmp.in > tmp.out");system("F_AC.out < tmp.in > tmp_AC.out");if (system("diff tmp.out tmp_AC.out")) {cout << "WA" << endl;return;} else cout << "AC" << endl;}
}signed main(){ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);int t = 1;/*cin >> t;*/while(t--) slove();return 0;
}

5、操作流程

执行对拍程序就可以等待,程序停止,程序停止就代表程序找到WA的数据。这时我们只需要打开tmp.in查看这份数据就可以啦!🥳

四、最后

创作不易,如有帮助,点个赞鼓励一下吧!万分感谢!!!😭

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/25946.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 函数与约束

MySQL 函数与约束 文章目录 MySQL 函数与约束1 函数1.1 字符串函数1.2 数值函数1.3 日期函数1.4 流程函数 2 约束2.1 概述2.2 约束演示2.3 外键约束2.4 删除/更新行为 1 函数 函数是指一段可以直接被另一程序调用的程序或代码。 1.1 字符串函数 MySQL中内置了很多字符串函数&…

【面试】什么是字节码指令

目录 1. 说明2. 定义3. 组成3.1 操作码&#xff08;Opcode&#xff09;3.2 操作数&#xff08;Operands&#xff09; 4. 特点5. 与数据类型的关系6.作用 1. 说明 1.字节码指令是Java虚拟机&#xff08;JVM&#xff09;执行的基本单元&#xff0c;它由操作码&#xff08;Opcode…

通用信息提取数据预处理

train_data./datasets/duuie output_folder./datasets/duuie_pre ignore_datasets["DUEE", "DUEE_FIN_LITE"] schema_folder./datasets/seen_schema # 对CCKS2022 竞赛数据进行预处理 import shutil # shutil.copytree(train_data,output_folder) impor…

项目:基于httplib/消息队列负载均衡式在线OJ

文章目录 写在前面关于组件开源仓库和项目上线其他文档说明项目亮点 使用技术和环境项目宏观结构模块实现compiler模块runner模块compile_run模块compile_server模块 基于MVC结构的OJ服务什么是MVC&#xff1f;用户请求服务路由功能Model模块view模块Control模块 写在前面 关于…

linux安装jdk + docker+dockercompose+aliyunACR

下载安装包 链接&#xff1a;https://pan.baidu.com/s/1AyFvPA5qwy4IxfZoTQohrQ 提取码&#xff1a;6666 安装jdk jdk-8u411-linux-x64.tar.gz 链接&#xff1a;https://pan.baidu.com/s/1BZ7J4L5PY-9nuQyxBMDGTA 提取码&#xff1a;6666 1、解压jdk tar -xvf jdk-8u411-li…

算法:读取redis中指令查询的键

1&#xff0c;redis查询的代码&#xff1a; 只读取双引号奇数行的数 34575) "7193139"34576) "0"34577) "7078990"34578) "0"34579) "7296242"34580) "0"34581) "1650126"34582) "0"…

如何克隆笔记本电脑上的硬盘?

笔记本电脑的信息存储在硬盘上&#xff0c;一旦硬盘发生故障&#xff0c;数据很容易丢失。克隆技术使我们能够将一个硬盘上的数据精确复制到另一个硬盘上&#xff0c;然后将其用作备份。此外&#xff0c;如果我们决定升级到更大容量或固态硬盘&#xff0c;克隆技术还允许我们将…

linux中xterm窗口怎么调整字体大小

需求&#xff1a;打开的xterm窗口字体比较小&#xff0c;怎么才能调整字体大小&#xff0c;打开的大写&#xff1a; 解决方法&#xff1a; 在home目录下搞一个设置文件 .Xresource&#xff0c;里面内容如下 然后把设置文件添加到 .tcshrc 文件中生效 这样重新打开的xterm字…

真北游记|三江交汇,碧海苍梧,端午去梧州吃龟苓膏

准备 t-14&#xff1a;高铁抢票&#xff08;A&#xff09; t-14&#xff1a;订行程(B)酒店&#xff08;C&#xff09; T-2&#xff1a;准备水、零食 T-1&#xff1a;物质准备&#xff1a;衣服、纸巾、毛巾、雨伞&#x1f302;、拖鞋、口罩&#x1f637;&#xff08;D&#xff0…

Helm在线部署Longhorn(1.6.0版本)分布式存储

环境依赖&#xff1a; k8s (版本大于等于v1.21版本)、helm工具 安装前准备 k8s worker 节点都需要执行 yum -y --setopttsflagsnoscripts install iscsi-initiator-utils echo "InitiatorName$(/sbin/iscsi-iname)" > /etc/iscsi/initiatorname.iscsi systemctl …

8.动态内存申请

知识点一&#xff1a;malloc函数和free函数 malloc函数 头文件&#xff1a;#include<stdlib.h>#include<string.h> // 用于memset函数的头文件 void *malloc(unsigned int num_ size); 形参: num_ size需要申请空间大小的字节数。 返回值&#xff1a;成功:返回…

ARMxy赋能温室环境自动化调控

智慧农业正以其独特的魅力描绘着未来的轮廓。作为这一变革的中坚力量&#xff0c;ARMxy工业计算机凭借其高性能、低功耗及高度灵活性&#xff0c;正逐步成为智能温室控制、精准灌溉及作物生长监测领域的核心引擎。 智能温室的智慧大脑 位于某地的现代农业园区&#xff0c;一座…

力扣118. 杨辉三角

给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 输入: numRows 1 输出: [[1…

绝密级的高考考卷大揭秘

今天既是端午节也是高考的最后一日。我相信各位考生在这个举国欢庆的日子都有着属于自己的惬意和喜悦。今日起&#xff0c;我将重启我的情报输出&#xff0c;但是在这个欢乐的小长假中就先来一个有趣的小文案。 一、出题者 一份高考试卷安全无虞地出现在考生面前&#xff0c;…

Python图像处理入门学习——基于霍夫变换的车道线和路沿检测

文章目录 前言一、实验内容与方法二、视频的导入、拆分、合成2.1 视频时长读取2.2 视频的拆分2.3 视频的合成 三、路沿检测3.1 路沿检测算法整体框架3.2 尝试3.3 图像处理->边缘检测(原理)3.4 Canny算子边缘检测(原理)3.5 Canny算子边缘检测(实现)3.5.1 高斯滤波3.5.2 图像转…

软件游戏steam_api.dll丢失的解决方法,总结5种有效的方法

在玩电脑游戏时&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“游戏缺少steam_api.dll”。这个问题可能让很多玩家感到困惑和烦恼。那么&#xff0c;究竟是什么原因导致游戏缺少steam_api.dll呢&#xff1f;又该如何解决这个问题呢&#xff1f;本文将为大家…

ISO 19115-2:2019 第6章 获取和处理元数据

6 获取和处理元数据 6.1 获取和处理要求的元数据 ISO 19115-1 确定了描述数字地理资源所需的元数据。本文件扩展了 ISO 19115-1 中确定的元数据,并确定了描述地理资源获取和处理所需的附加元数据。 6.2 获取和处理元数据包及其依赖关系 ISO 地理信息系列标准使用一个或多个…

C# 类或结构体的成员

字段&#xff08;Field&#xff09;属性&#xff08;Property&#xff09;方法&#xff08;Method&#xff09;构造函数&#xff08;Constructor&#xff09;索引器&#xff08;Indexer&#xff09;事件&#xff08;Event&#xff09;嵌套类型&#xff08;Nested Type&#xff…

反射学习记

Java 中的反射是什么意思&#xff1f;有哪些应用场景&#xff1f; 每个类都有⼀个 Class 对象&#xff0c;包含了与类有关的信息。当编译⼀个新类时&#xff0c;会产生一个同名的 .class 文件&#xff0c;该⽂件 内容保存着 Class 对象。类加载相当于 Class 对象的加载&a…

2024.6.10刷题记录

目录 一、881. 救生艇 贪心-排序-双指针 二、8. 字符串转换整数 (atoi) 1.模拟-未考虑溢出 2.考虑溢出问题 三、9. 回文数 1.双指针-字符串 2.数字翻转 3.数字翻转-只翻转一半 一、881. 救生艇 贪心-排序-双指针 class Solution:def numRescueBoats(self, people: Li…