atiro v2.0.4
zh-CN | en-US
Atiro
Atiro 是一款 Useless OI Tools。Atiro 编译并运行本地代码,并评判本地样例。
目录
安装
我们提供了两种安装方式,分别是可执行文件、npm 包。可执行文件是较为简易的方法,npm 包是较为通用的方法。
可执行文件
适用于 AMD64 架构的 Windows、Linux 和 macOS 平台。 x86 或 ARM64 等其他架构不提供可执行文件。
在 Realeases 页面下载最新版本的可执行文件,将其放置到计算机的任意位置,建议确保其能够在命令行中全局调用。
为了确保 Atiro 正常运行,你需要在计算机上安装 C++ 编译器 g++,并能在命令行中全局调用。对于 Windows 计算机,你还可以选择通过以下命令指定 g++ 程序的路径:
$ atiro config compiler.path --set <path/to/g++>这是编译所必需的。
NPM 包
适用于支持 Node.js 的所有平台。
在开始使用 npm 安装 Atiro 之前,你需要确保以下软件已经安装在你的计算机上:
Node.js 安装完成后,你可以通过以下命令安装 Atiro:
$ npm install -g atiro如果已经安装过 Atiro,可以通过以下命令更新:
$ npm update -g atiro为了确保 Atiro 正常运行,你需要在计算机上安装 C++ 编译器 g++,并能在命令行中全局调用。对于 Windows 计算机,你还可以选择通过以下命令指定 g++ 程序的路径:
$ atiro config compiler.path --set <path/to/g++>这是编译所必需的。
快速开始
如果你想快速开始使用 Atiro,以下是一些基本步骤:
编写一个答案程序(例如,
A.cpp)。使用以下命令进行评测:
$ atiro judge A这将编译 A.cpp 并运行、评测,使用默认的样例数据文件命名规则(A*.in / A*.ans)。
用法
Atiro 未对答案程序和评测辅助程序作任何限制,切记确保信任这些程序,切忌在本地或在线评测系统中使用。
Judge
$ atiro judge|j [file] [data] [options]编译代码,对每组样例数据运行并评判。
简单示例如下:
$ atiro j # 编译 TEST.cpp 并运行、评测,数据为 TEST*.in / TEST*.ans$ atiro j A # 编译 A.cpp 并运行、评测,数据为 A*.in / A*.ans$ atiro j A-std A* # 编译 A-std.cpp 并运行、评测,数据为 A*.in / A*.ans具体解释如下:
file,指定答案程序文件名,默认值为 TEST。
data,指定样例数据文件名,在未指定 generator 时,这是一个通配符表达式,默认值为 <file>*,即以 <file> 值(上个参数)为前缀匹配。在指定 generator 时,该选项指定一个确切的文件名。
首先编译 <file>.cpp 得到 <file> / <file>.exe,然后查找所有匹配 <data>.in 的文件,作为输入数据运行并输出到 <data>.out,如果存在 <data>.ans,则将 <data>.out 与 <data>.ans 比较。在指定 generator 时,由 generator 连续生成输入数据至 <data>.in。
可选选项:
-c, --comp "-O2 -std=c++14",指定编译选项,默认不指定任何编译选项。-t, --time 1000,指定时间限制,单位为 ms,默认为5000。-j, --judg real,指定比较方式,text文本比较,numb整数比较,real实数比较(相对误差1e-9),也可以指定checker文件名,默认为text。-g, --grad grader,指定interactor文件名,这意味着本题是一道交互题。-s, --solv solver,指定solver文件名,这意味着标准答案将由solver计算得出,而不是提前准备。-m, --make maker,指定generator文件名,这意味着接下来将由generator连续生成输入数据至<data>.in评测,通常情况下须配合solver使用,也就是中文语境下俗称的「对拍」。-a, --allj,强制测试所有数据,如果不使用该选项,则会在首次评测结果非Accepted时停止测试接下来的数据。在指定generator时,这意味着「对拍」将持续进行下去,直到主动结束程序。
这里有关于以上指令的简单示例:https://github.com/Sukwants/Atiro-examples
评测辅助程序
Atiro 支持的评测辅助程序有 checker、interactor、solver、generator,除 solver 外建议使用 testlib.h(GitHub 项目地址)。Atiro 不予内置 testlib.h,所以需要自行下载,或使用命令 atiro download testlib 下载,也可以选择自行处理参数和文件。
评测辅助程序的编译选项与答案程序的编译选项保持一致,除 solver 外运行时间不做限制,solver 运行时限与答案程序的运行时限保持一致。
checker,比较器,支持testlib.h,使用--judg选项指定。如不使用testlib.h,调用时传入 3 个参数<input file>、<output file>、<answer file>,分别对应.in文件、.out文件、.ans文件。程序须自行报告评测结果,同时在评测结果为Accepted时返回0,非Accepted时返回非0。interactor,交互器,支持testlib.h,使用--grad选项指定。如不使用testlib.h,调用时传入 2 个参数<input file>、<output file>,分别对应.in文件、.out文件,并将交互器的输入、输出与答案程序的输出、输入连接。程序在交互正确结束 时返回0,交互存在错误时返回非0。solver,解决器,使用--solv选项指定。从.in文件读入数据,并输出到.ans文件。程序在交互正确结束时返回0,返回非0将被判定为Runtime Error。通常情况下,请将solver写作答案程序的格式。generator,生成器,支持testlib.h,使用--make选项指定。如不使用testlib.h,调用时传入 2 个参数<data number>、<seed>,<data number>为测试点编号,<seed>是一个长度为 10 的随机字符串,同时也会在控制台的数据点标题行给出。生成的数据输出到标准输出流。不处理程序返回值,但仍建议返回值为 0。
OJ Tools
需要使用 atiro config browser.path --set /path/to/browser 指定一个基于 Chromium 的浏览器路径(如 Chrome 或 Edge),可以通过 chrome://version 或 edge://version 获取可执行文件路径。
$ atiro <oj> login|i [-c, --cookies [file]] | logout|o | get|g <id> [file] | submit|s [file] [id]在 Atiro 登入登出 OJ,从 OJ 上拉取题目样例,或提交答案到 OJ。
<oj> 选项可选 codeforces|cf、atcoder|at、luogu|lg、vjudge|vj。
简单示例如下:
$ atiro cf i # 在 Atiro 登入 Codeforces$ atiro at i -c # 使用 Cookies 登入 AtCoder$ atiro vj o # 在 Atiro 登出 vjudge$ atiro cf g https://codeforces.com/contest/1/problem/A
# 拉取 Codeforces 题目 1A 的样例,文件名为 TEST$ atiro cf g https://codeforces.com/contest/1
# 拉取 Codeforces 比赛 1 所有题目的样例,文件名为题目编号$ atiro at s C https://atcoder.jp/contests/arc100/tasks/arc100_a
# 提交 C.cpp 到 AtCoder 题目 ARC100A具体解释如下:
<oj>,指定 Online Judge 平台,当前支持 Codeforces(codeforces|cf)、AtCoder(atcoder|at)、洛谷(luogu|lg)、vjudge(vjudge|vj)。
可选命令:
login|i [-c, --cookies [file]],登入 OJ,拉取有权限题目的样例或提交答案需要在 Atiro 登入 OJ。也可以通过 Cookies 登录,用法是login|i -c, --cookies [file],指定file则从文件读入 Cookies,否则从控制台读入。logout|o,登出 OJ。get|g <id> [file],拉取指定题目或指定比赛所有题目的样例到本地,<id>可以是对应题目或比赛的 url 或 id,在拉取单个题目样例时可使用[file]指定文件名,否则为TEST。注意,拉取比赛所有题目的样例不适用于 vjudge。submit|s [file] [id],提交答案,[file]为答案程序名,默认为全局默认文件名,[id]为题目 url 或 id。
上文所说的题目或比赛的 id,形如 Codeforces 的 1A、1,AtCoder 的 "arc100 a"、arc100,洛谷的 P1004、1、"P1004 1"(比赛提交),vjudge 的 CodeForces-1A。
Config
$ atiro config|c <key> [-g, --get] [-s, --set <value>] [-u, --unset]设定用户配置。
简单示例如下:
$ atiro c file.name --get # 获取默认答案程序的当前配置值$ atiro c judge.comp --set "-O2 -std=c++14" # 设置默认编译选项为 "-O2 -std=c++14"$ atiro c judge.time --unset # 清除默认时间限制设置具体解释如下:
key,指定进行操作的配置项。
可选操作:
-g, --get,获取配置项当前值。-s, --set <value>,设置配置项值为value。-u, --unset,设置配置项值为空(使用默认值)。
可用配置:
compiler.path,编译器路径,如能全局调用 g++ 可忽略。file.name,全局默认文件名,包括judge命令的file参数、OJ Tools 的默认拉取文件名和默认提交文件名。judge.comp,默认编译选项,即judge命令的comp选项。judge.time,默认时间限制,即judge命令的time选项。judge.judg,默认比较方式 /checker,即judge命令的judg选项。judge.grad,默认interactor,即judge命令的grad选项。judge.solv,默认solver,即judge命令的solv选项。judge.make,默认generator,即judge命令的make选项。update.type,更新版本自动检测模式。browser.path,浏览器路径,OJ Tools 必需选项。
Update
$ atiro update|u [type|t | notice|n | ignore|i]检测新版本,或设置自动检测。
atiro update,检测新版本。atiro update type,查询当前自动检测模式,notice或ignore,默认为ignore。atiro update notice,设置自动检测模式为notice,将每隔 48 小时自动检测更新版本,如检测失败将在 12 小时后重新检测。atiro update ignore,设置自动检测模式为ignore,将忽略新版本。
也可以通过 config 命令查询和修改 update.type 配置选项,可以设置为 notice 或 ignore。
Reset
$ atiro reset清除 Atiro 所有数据,包括用户配置和运行数据。
卸载
可执行文件
执行 atiro reset 清除数据。
直接删除可执行文件。
如果不再需要 g++,卸载 g++。
NPM 包
执行 atiro reset 清除数据。
执行 npm uninstall -g atiro 卸载 Atiro。
如果不再需要 Node.js,卸载 Node.js。
如果不再需要 g++,卸载 g++。
致谢
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago