首页 > 编程语言 >HydroOJ 从入门到入土(17)批量转化其他格式题库(Python)

HydroOJ 从入门到入土(17)批量转化其他格式题库(Python)

时间:2024-04-29 22:55:26浏览次数:29  
标签:此行 17 删除 Python HydroOJ Hydrolizer 格式 默认值 数据

新题库,新快乐,新痛苦。

一、想法

有了多种题库之后,常常会遇到大量题库无法转化到自己的 OJ 上。每次都要重新手写解析器,非常浪费时间,于是抽出了这个工具。

本工具可以将抽取好的信息自动组装成符合 HydroOJ 格式的题目并自动压缩,解决后半部分的转化工作。

二、实现

1. 准备包和相应环境

包:https://github.com/15921483570/hydrolizer

环境:在包内执行 pip install -r requirements.txt

2. 使用

只需导入本包后,按照范例,将所需信息以字典形式传入 Hydrolizer() 即可。

如需将 Hydrolizer.hpath 目录内的所有题目文件夹打包,可以直接调用 Hydrolizer.zipzip()。打包好的文件可以直接上传 HydroOJ 使用。

至于源文件的信息抽取,很遗憾,因源文件种类多样,无法统一写解析,只能根据实际情况,自行另写一个解析器以完成前半部分工作,本工具仅能实现后半部分工作。

3. 例子

import hydrolizer

fname = "testttt"
pid = 1
data_src = os.path.join('test', 'data')

d = {
    # 基本属性
    "fname": fname,  # 必填
    "data_src": data_src,  # 评测数据源文件夹路径,默认值为'',如无数据会报警告

    # 下载外部文件所需信息
    "headers": {},  # 默认值为 '',如无数据可删除此行
    "cookies": {},  # 默认值为 {},如无数据可删除此行
    "ignore": [],  # 屏蔽网址关键词列表, 格式为['屏蔽词1', '屏蔽词2', ...],默认值为 [],如无数据可删除此行

    # problem.md, 文字部分会自动从 html 格式转为 Markdown
    "bg": "背景",  # 默认值为 '',如无数据可删除此行
    "desc": "题目描述 ![](https://abc.com/123.png)",  # 默认值为 '',如无数据会报警告,如存在外部图片链接会自动下载并整理
    "infmt": "输入格式",  # 默认值为 '',如无数据可删除此行
    "outfmt": "输出格式",  # 默认值为 '',如无数据可删除此行
    "trans": "题目大意",  # 默认值为 '',如无数据可删除此行
    "samples": [['1', '2'], ['2', '3']],  # 必填,格式为:[第1组数据[输入,输出], 第2组数据[输入,输出], ...]
    # 如无样例数据会报 ValueError, 如某次输入输出均为空会报警告
    "hint": "提示",  # 默认值为 '',如无数据可删除此行

    # problem.yaml
    "pid": f"P{pid}",  # 数字或字符串,默认值为'P1000'
    "owner": 2,  # 默认值为 2,如无特别要求可删除此行
    "title": "买笔",  # 必填,如无数据会报 ValueError
    "tags": ['选择'],  # 默认值为 None,格式为['标签1','标签2', ...],如无特别要求可删除此行
    "difficulty": 1,  # 默认值为 0,如无特别要求可删除此行

    # ./testdata/config.yaml
    "tp": 'default',  # 题目类型,默认值为 'default',如无特别要求可删除此行
    "tm": 1000,  # 限制时间,默认值为 1000,如无特别要求可删除此行
    "mem": 256,  # 限制内存,默认值为 256,如无特别要求可删除此行
    # 以上三项若全部为默认值,则不会生成 config.yaml 文件,评测时 oj 会自动处理
}

Hydrolizer.DEFAULT_MEMORY = 256  # 可根据题目实际情况调整默认限制内存,减少生成大量无效 config.yaml
Hydrolizer(**d)  #
Hydrolizer.zipzip()  # 打包 Hydrolizer.hpath 目录内的所有文件夹到 Hydrolizer.hpath/000.zip

三、提示

包内自带一个 test 用例,可以直接运行 __init__.py 文件查看使用效果。

标签:此行,17,删除,Python,HydroOJ,Hydrolizer,格式,默认值,数据
From: https://www.cnblogs.com/bowen404/p/18166793

相关文章

  • Python 学习笔记
    1、Python简介设计哲学:强调代码的可读性和简洁的语法(尤其是用空格缩进来定义代码块,而不是使用大括号或关键词)。应用领域:Web开发、数据科学、人工智能、科学计算、自动化脚本等。参考文档:Python简介2.基本语法解释器:Python代码可以通过Python解释器直接运行,也可以作为脚本......
  • 【Python】Q-Learning处理CartPole-v1
    上一篇配置成功gym环境后,就可以利用该环境做强化学习仿真了。这里首先用之前学习过的qlearning来处理CartPole-v1模型。CartPole-v1是一个倒立摆模型,目标是通过左右移动滑块保证倒立杆能够尽可能长时间倒立,最长步骤为500步。模型控制量是左0、右1两个。模型状态量为下面四个:......
  • 深入理解Python多进程:从基础到实战
    title:深入理解Python多进程:从基础到实战date:2024/4/2920:49:41updated:2024/4/2920:49:41categories:后端开发tags:并发编程多进程管理错误处理资源调度性能优化异步编程Python并发库引言在Python编程中,多进程是一种重要的并发编程方式,可以让我们充分......
  • Python 编程
    第1章什么是Python?#Python——编程新手最好的选择第2章为Python做好准备#单行注释打印出单词"HelloWorld"print("HelloWorld")'''多行注释这是一条注释这也是一条注释'''print("HelloPython")第3章变量和操作符的世界3.......
  • Python: download file
     defgetLink(url:str):""":paramurl::return:"""headers={'Accept-Language':'zh-CN,zh;q=0.9,en-CN;q=0.8,en;q=0.7,zh-TW;q=0.6','Cookie':'......
  • [Python急救站]基于Transformer Models模型完成GPT2的学生AIGC学习训练模型
    为了AIGC的学习,我做了一个基于TransformerModels模型完成GPT2的学生AIGC学习训练模型,指在训练模型中学习编程AI。在编程之前需要准备一些文件:首先,先win+R打开运行框,输入:PowerShell后输入:pipinstall-Uhuggingface_hub下载完成后,指定我们的环境变量:$env:HF_ENDPOINT="ht......
  • 马斯克突击访华;谷歌 Python 基础团队全数被裁;丨 RTE 开发者日报 Vol.195
      开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑......
  • Window 安装 Python 失败 0x80070643,发生严重错误
    问题现象用安装包在window安装python,会遇到没有安装成功,卸载后,再次双击安装包安装的时候,直接无法安装了。这个问题在githubissue中有提到,但是都是2022年的时,代码修复,但是在2024年,安装的时候还是遇到了这个问题。测试下来:python3.7,3.8没有这个问题,如果着急,就先安......
  • python使用langchain调用本地大模型
    参考https://www.cnblogs.com/scarecrow-blog/p/17875127.html模型下载之前说过一次https://www.cnblogs.com/qcy-blog/p/18165717也可直接去官网,把所有文件都点一遍fromlangchainimportPromptTemplate,LLMChainimporttorchfromtransformersimportAutoTokenizer,A......
  • CobaltStrike 远控木马在42.194.250.177的80端口报警;奇安信网神态势感知报警(多次)
    在态势感知上报毒——目的IP:42.194.250.177的80端口。报毒名称为CobaltStrike远控木马活动事件,这个情况发生在已经封禁掉源IP和目的IP的前提下,所以让人百思不得其解。然后我登上了我的kali访问了这个目的IP的80端口,嘿!您猜怎么着?!这不是明摆着,欢迎您的到来嘛!这我不就来了嘛,Dir......