Observed since 20 Oct, 18:19 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
The helper for Acmer
本地环境下的 Polygon , 但不止于 Polygon.
你可以
std , checker , validator , interactorrich , typer 带来的美丽TODO
helper sys run 可以执行 save 下的数据Validator 和 Interactor 的支持hash 动态选择是否编译得益于 typer , 关于题目生成的功能都可以通过输入 helper --help 大致了解
pip install acmhelper
你需要具有全局的g++ , 默认使用 -std=c++17 编译 , 可在设置修改
如果想要使用图的渲染功能 , 你需要下载 Graphviz 的二进制文件并且将其加入 Path
对于形式为
n m (optional)
u1 v1 w1 (w1 is optional)
...
un vn wn
的数据 , 可以使用 helper render 来快速渲染
首先创建文件 test.in , 写入一个不连通的 DAG
5 2
1 2 3
1 3 5
1 5 -7
在该文件目录下输入 helper render -dic test.in
查看 test.png , 应该如下所示
具体的设置请使用 helper render --help 查看
int范围内))首先新建文件夹 Problem , 然后在此文件夹下打开命令行 , 输入 helper sys init , 回答问题 , 完成初始化
如果初始化正确的话你的目录结构应该向下面的一样(部分文件可能没有 , 这需要我们后续手动创建)
题目目录结构
- Problem
- config.json
- std.cpp/py
- testlib.h (optional)
- checker.cpp/py (optional with "testlib.h")
- interactor.cpp (optional with "testlib.h") (Not implemented)
- validator.cpp (optional with "testlib.h") (Not implemented)
- generator
- make1.cpp
- make2.py
- accept
- ac1.cpp
- ac2.py
- wrong
- wa1.cpp
- wa2.py
- exec
- something executable...
- data
- auto
- in
- 1.make1.in
- 2.make2.in
- out
- 1.ac1.out
- 1.wa1.out
- save
- in
- 1.make1.in
- 2.make2.in
- out
- 1.ac1.out
- 1.wa1.out
- log
- 20220303.log
- temp
- someting temporary...
- output
- something...
然后打开 std.cpp , 写入以下代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int a;
cin >> a;
cout << abs(a)/2 << '\n';
return 0;
}
保存后 , 我们来写第一个数据生成器 make1.py , 它只用来生成大于 0 的数.
在 generator 下创建文件 make1.py , 写入以下代码
from random import randint
print(randint(1, 1000))
接下来只需要修改一些配置 , 就可以通过 CLI 来生成数据了
打开文件 config.json , 将如下代码复制
{
"gen_list": [
"make1"
],
"accept_list": [],
"wrong_list": [],
"gen_link_code": {
"make1": [
"std"
]
},
"gen_data_num": {
"make1": 10
},
"time_limit": 2,
"max_time_limit": 10,
"std": "std",
"checker": "checker",
"interactor": "",
"validator": "",
"gcc_version" 17
}
这个文件描述的含义是 , 有一个生成器 make1 , 其生成 10 组数据 , 生成的数据被用来运行 std , 没有额外的理论错误和理论正确的代码 , Time_Limit_Exceed 的上界是 2s , 程序被 kill 掉的上界是 10s , std 的辨识名称为 std , checker 的辨识名称为 checker , 没有使用 interactor 和 validator , 使用 -std=c++17 编译
保存后 , 输入 helper sys run , 你应该能看到我们暂时性的成功
接下来 , 我们来添加额外的生成器,测试代码和 checker 来完善这道题
在 wrong 下创建 wa1.cpp 和 wa2.py , 然后写入下述代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int a;
cin >> a;
cout << a-1 << '\n';
return 0;
}
n = int(input())
print(n + 1)
在 accept 下创建 ac1.cpp 写入如下代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int a;
cin >> a;
if(a >= 0) { cout << a-1 << '\n'; }
else { cout << a+1 << '\n'; }
return 0;
}
可以发现 , wrong 下的两个代码分别会在 a<0 和 a>0 时出错 , 所以我们再新建一个生成器
在 generator 下创建 make2.py 写入如下代码 , 注意负号
from random import randint
print(-randint(1, 1000))
可以发现这道题需要 checker , 打开 checker.cpp , 写入如下代码
#include <bits/stdc++.h>
#include "testlib.h"
using namespace std;
int main(int argc,char** argv) {
registerTestlibCmd(argc,argv); // Required
int n = inf.readInt();
int m = ouf.readInt();
if(abs(m) < abs(n)) { quitf(_ok,"Correct!"); }
else { quitf(_wa,"Wrong Answer!"); }
}
最后我们再修改一下 config.json
{
"gen_list": [
"make1",
"make2"
],
"accept_list": [
"ac1"
],
"wrong_list": [
"wa1",
"wa2"
],
"gen_link_code": {
"make1": [
"std",
"ac1",
"wa1",
"wa2"
],
"make2": [
"std",
"ac1",
"wa1",
"wa2"
]
},
"gen_data_num": {
"make1": 10,
"make2": 10
},
"time_limit": 2,
"max_time_limit": 10,
"std": "std",
"checker": "checker",
"interactor": "",
"validator": "",
"gcc_version": 17
}
最后输入 helper sys run , 完成了.
如果字体和终端合适 , 你应该会看到像这样的东西
不出意料地 , 两个不对的程序在合适的地方不对了.
作为结尾 , 我们来使用 CLI 打包数据以及 checker
输入 helper sys add 1 2 3 4 5 6 7 8 9 10 , 这样我们就将前10组输入数据和 std 的输出数据从 auto 移动到了 save 下 , 值得注意的是 , 数据的编号会自动地递增 , 所以不用担心数据覆盖问题
然后输入 helper sys output checker.cc , 查看 output 文件夹下 , 你应该可以看到名为 data.zip 的文件 , 其中的所有文件都被合适的重命名了 , 特殊的 , checker 被重命名为了 checker.cc
更细节的使用请参考 helper sys --help , helper sys add --help 等
pypistats · 42 observations shown. Missing days are unknown. Source category: overall: without mirrors.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-20 – 2026-10-20 | 1 | 2026-10-21T14:35:32.4125969Z |
| 2026-10-19 – 2026-10-19 | 2 | 2026-10-21T14:35:32.4125969Z |
| 2026-10-13 – 2026-10-13 | 1 | 2026-10-21T14:35:32.4125969Z |
| 2026-10-12 – 2026-10-12 | 1 | 2026-10-21T14:35:32.4125969Z |
| 2026-10-11 – 2026-10-11 | 2 | 2026-10-21T14:35:32.4125969Z |
| 2026-10-09 – 2026-10-09 | 3 | 2026-10-21T14:35:32.4125969Z |
| 2026-10-08 – 2026-10-08 | 4 | 2026-10-21T14:35:32.4125969Z |
| 2026-10-07 – 2026-10-07 | 2 | 2026-10-21T14:35:32.4125969Z |
| 2026-10-06 – 2026-10-06 | 1 | 2026-10-21T14:35:32.4125969Z |
| 2026-09-30 – 2026-09-30 | 1 | 2026-10-21T14:35:32.4125969Z |
| 2026-09-28 – 2026-09-28 | 3 | 2026-10-21T14:35:32.4125969Z |
| 2026-09-26 – 2026-09-26 | 3 | 2026-10-21T14:35:32.4125969Z |
| 2026-09-25 – 2026-09-25 | 3 | 2026-10-21T14:35:32.4125969Z |
| 2026-09-20 – 2026-09-20 | 1 | 2026-10-21T14:35:32.4125969Z |
| 2026-09-15 – 2026-09-15 | 2 | 2026-10-21T14:35:32.4125969Z |
| 2026-09-12 – 2026-09-12 | 2 | 2026-10-21T14:35:32.4125969Z |
| 2026-09-10 – 2026-09-10 | 1 | 2026-10-21T14:35:32.4125969Z |
| 2026-09-09 – 2026-09-09 | 7 | 2026-10-21T14:35:32.4125969Z |
| 2026-09-07 – 2026-09-07 | 2 | 2026-10-21T14:35:32.4125969Z |
| 2026-09-06 – 2026-09-06 | 4 | 2026-10-21T14:35:32.4125969Z |
| 2026-09-03 – 2026-09-03 | 1 | 2026-10-21T14:35:32.4125969Z |
| 2026-08-31 – 2026-08-31 | 2 | 2026-10-21T14:35:32.4125969Z |
| 2026-08-28 – 2026-08-28 | 1 | 2026-10-21T14:35:32.4125969Z |
| 2026-08-24 – 2026-08-24 | 9 | 2026-10-21T14:35:32.4125969Z |
| 2026-08-23 – 2026-08-23 | 3 | 2026-10-21T14:35:32.4125969Z |
| 2026-08-21 – 2026-08-21 | 1 | 2026-10-21T14:35:32.4125969Z |
| 2026-08-20 – 2026-08-20 | 1 | 2026-10-21T14:35:32.4125969Z |
| 2026-08-19 – 2026-08-19 | 2 | 2026-10-21T14:35:32.4125969Z |
| 2026-08-18 – 2026-08-18 | 84 | 2026-10-21T14:35:32.4125969Z |
| 2026-08-17 – 2026-08-17 | 6 | 2026-10-21T14:35:32.4125969Z |
| 2026-08-16 – 2026-08-16 | 2 | 2026-10-21T14:35:32.4125969Z |
| 2026-08-14 – 2026-08-14 | 4 | 2026-10-21T14:35:32.4125969Z |
| 2026-08-13 – 2026-08-13 | 3 | 2026-10-21T14:35:32.4125969Z |
| 2026-08-09 – 2026-08-09 | 2 | 2026-10-21T14:35:32.4125969Z |
| 2026-08-07 – 2026-08-07 | 1 | 2026-10-21T14:35:32.4125969Z |
| 2026-08-06 – 2026-08-06 | 1 | 2026-10-21T14:35:32.4125969Z |
| 2026-08-04 – 2026-08-04 | 5 | 2026-10-21T14:35:32.4125969Z |
| 2026-08-03 – 2026-08-03 | 8 | 2026-10-21T14:35:32.4125969Z |
| 2026-08-02 – 2026-08-02 | 2 | 2026-10-21T14:35:32.4125969Z |
| 2026-08-01 – 2026-08-01 | 1 | 2026-10-21T14:35:32.4125969Z |
| 2026-07-27 – 2026-07-27 | 2 | 2026-10-21T14:35:32.4125969Z |
| 2026-07-23 – 2026-07-23 | 3 | 2026-10-21T14:35:32.4125969Z |
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.1 | 25 Oct 2022 | 2 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 18:19 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:2a511925a26bb953ad26c18a0f236a3d8f50ef46433a03d26a8f532e78b25176