-
Notifications
You must be signed in to change notification settings - Fork 0
v0.1 它是如何工作的
陈鼫RWHTYFZ edited this page Aug 19, 2022
·
1 revision
- 通过模拟网页请求获取比赛页面
- 通过
oiTerminal/platforms
的具体实现提取 题目描述和样例 - 生成文件
dist/比赛平台名/比赛id/题目号.{in/out}.测试点号
- 生成文件
dist/比赛平台名/比赛id-语言/题目号.语言文件后缀
(相关配置见lang.json
和config.json
,如果你需要定义语言模板,应该把模板代码放在template/
文件夹中,且温建平和lang.json
中的template
字段保持一致 - 生成文件
dist/比赛平台名/比赛id-语言/state.json
目前包含oj
,contestID
,本地语言lang
,oj的语言标识up_lang
例如:{"oj": "Codeforces", "contestId": "1153", "lang": "C++17", "up_lang": "54"}
- 建立
测试
和提交
脚本的软链接 - 跳转到生成的代码文件
使用示例: ./contest.py cf 1104
- 不带参数,获取
lang.json
中的本地语言支持的配置(相关配置config.json
中lang
字段) - 带
--oj
参数,例如--oj cf
,模拟网页请求cf,获取语言支持 键值对。(相关配置config.json
的up_lang
字段)
使用示例:
./lang.py
./lang.py --oj cf
- 读取
contest.py/problem.py
生成的state.json
(见上)只关心contestId
和lang
字段 - 创建
TEST
文件夹,把代码复制到TEST中,例如A.cpp
复制到TEST/Main.cpp
- 调用 编译 运行 命令,配置见
lang.json
我这里C++配置的是clang++
,如果你需要使用g++
或gcc
作为编译工具请自行替换为相应的编译命令,其它语言同理 - 获取运行时间,比较结果,如果结果不同调用diff展示差异
使用示例(注意需要在具体的dist/<OJ>/<contest>/
目录下使用): ./test.py A
- 模拟网页请求,获得页面,模拟填表,完成登录。(相关配置和文件,
config.json
中的用户名和密码,生成的state.json
的oj
) - 跳转到对应题目页面,模拟填表,完成提交。(相关配置和文件,
state.json
中配置的contestId
,命令行传入的题目号) - 获取结果,模拟请求结果页,或这访问网站提供的结果查询api(如cf是提供的api),分析返回数据。
使用示例(注意需要在具体的dist/<OJ>/<contest>/
目录下使用): ./submit.py A
-
<oj> <contest id>
模拟网页请求,获得页面,模拟填表,完成比赛的报名。
使用示例: ./reg.py cf 1104