引言
在计算机科学教育与编程竞赛的生态中,为在线评测(Online Judge, OJ)系统构建高质量编程题目,历来是一项对专业能力与时间投入要求极高的挑战。出题者不仅要构思富有创意的算法问题,还需以高度严谨的逻辑撰写题目描述,而其中最为繁复的环节莫过于设计并实现能够覆盖各类边界条件的测试数据。本文旨在介绍一款AI辅助工具,其核心价值在于重构了这一传统工作流。通过引入自动化流程,该工具能够基于一个简单的代码片段或一句话的题目设想,一键式生成包含题目描述、标准解法及完整测试数据在内的全套标准化资源,从而在根本上提升出题的效率与质量。
1. “代码优先”工作流:从现有代码生成完整题目
“代码优先”工作流在教学内容和竞赛题目的开发中具有重要的战略意义。此方法适用于已具备明确算法思路或核心代码实现,需要将其封装为结构化编程题目的场景。从一个经过验证的解法出发,能够确保题目设计与预期考点紧密耦合,从源头上保证了题目的可解性与评测的精确性。

1.1. 步骤一:输入参考代码
此工作流始于一份能够体现核心算法逻辑的参考代码。
·定位界面区域:用户需将准备好的Python参考代码粘贴至界面左侧指定的代码输入框中。
·分析代码示例:源文件1.png中展示的代码片段,即是未来题目的标准答案(“参考代码”)。所提供的代码片段,s = 'HelloWorldH' ... d[ord(s[i]) - ord('A')] = i,代表了计算字符串中相同字符间最大距离的核心逻辑。AI将基于此代码的结构与意图进行后续分析。
1.2. 步骤二:AI生成题目描述
在输入参考代码后,点击“生成题目”按钮即可启动AI的封装流程。
1.解释AI的功能:AI系统通过静态代码分析来解构输入代码。它能够推断出被操作的数据结构(如字符串、数组),识别出表征核心算法的循环与条件模式,并解析最终的输出操作,从而智能地构建出包含题目背景、输入输出格式及样例的完整题目描述。
2.分析生成内容:如1.png所示,AI成功生成了题目名称“字符串最长距离”,并提供了一份专业、结构化的题目文档。
3.强调可审查性:AI生成内容后,出题者应扮演最终审核者的角色,根据具体的教学目标或竞赛要求对描述进行微调,确保其清晰度和准确性。1.png中的指示“检查并复制题目描述到平台创建编程题的输入框中”即强调了这一人工校验环节的重要性。
1.3. 步骤三:一键生成测试数据
最后,为封装好的题目配备高质量的评测数据。
1.触发操作:在确认题目与代码无误后,点击“生成测试数据 (基于参考代码)”按钮。
2.解读执行日志:执行日志(Generating input data generator script..., Generating 10 test cases...)揭示了后台的自动化流程:系统首先生成一个用于创建输入数据的脚本,随后执行该脚本,从而高效地产生了10组独立的输入(.in)与输出(.out)文件。
3.评估其重要性:此自动化步骤构成了该工具的核心竞争力。它通过算法化、可复现的方式生成测试用例,解决了人工设计时常出现的覆盖不全或偏向特定解法等痛点,从根本上提升了评测的科学性。
除了从已有代码出发封装题目,该工具亦支持从一个更为抽象的概念出发,进行从零到一的创新。
加入题库效果:


2. “描述优先”工作流:从一句话概念生成所有内容
“描述优先”工作流充分展现了AI在教育内容创作领域的战略价值。该方法特别适用于教学规划或灵感构思阶段,当出题者只有一个核心概念(例如“考察数组插入操作”)而无现成代码时,AI能将此概念迅速转化为一个包含描述、代码和数据的完整可部署题目。

2.1. 步骤一:输入题目设想
此工作流的起点极为简明,只需用户以自然语言表达其核心意图。
·操作指引:参照2.png,用户在“题目设想”输入框中,用一句话描述想要创建的题目类型即可。
·举例说明:2.png中的示例——“实现一个新数组插入操作的题目”——精准地展示了输入的简洁性与高效性。
2.2. 步骤二:AI全自动生成
点击生成按钮后,AI将执行一个端到端(end-to-end)的自动化生成任务。
1.整合生成过程:正如2.png中的描述——“只要说明想创建的题目,AI自动生成描述及OJ可通过代码,及测试数据!!”——所言,这是一个高度整合的自动化流程。
2.分析产出物:AI会并行生成并展示三项核心资产:
o题目描述:一份包含背景、格式要求及样例的完整题目文档。
o可通过的代码:一个符合题目要求的Python参考解法。
o测试数据:与代码逻辑完全匹配的多组输入输出数据。
3.对比优势:“代码优先”工作流专长于对已有教学概念的验证与封装,而“描述优先”工作流则在创意构思与快速原型开发方面表现卓越,它允许教育者在没有任何编码开销的情况下,迅速探索新的题目类型。
无论采用何种工作流,最终都将生成一套标准化的产出文件,请注意,一定要检查,验证,不可完全交给AI。

3. 解读与使用生成结果
要将AI生成的题目成功部署至在线评测平台,关键在于理解其标准化的文件结构。本章节将为用户解析每个文件的核心作用,并提供清晰的部署指南。
3.1. 文件结构总览
工具的最终产出是一系列文件,其结构如3.png所示,各文件职责明确,共同构成一个完整的题目包。
文件名 | 类型 | 核心作用 |
problem.md | Markdown | 用于在OJ平台展示的题目描述文档,包含题目背景、格式要求及样例。 |
solution.py | Python file | 题目的标准答案或参考解法代码,用于验证测试数据的正确性。 |
gen_input.py | Python file | 用于生成测试输入数据的脚本。此脚本是重要的技术资产,它使测试数据生成过程透明且可复现,便于未来轻松扩展或修改数据。 |
1.in-10.in | IN 文件 | 10组独立的测试输入数据,用于提供给待评测程序。 |
1.out-10.out | OUT 文件 | 与输入文件一一对应的标准输出结果,用于比对和判断评测程序的正确性。 |

3.2. 如何部署到OJ平台
借助这套标准化的文件,将题目部署到任何主流OJ平台都变得轻而易举。
1.题目配置:将problem.md文件中的内容完整复制到OJ平台的题目描述编辑器中。
2.测试数据上传:将所有.in和.out文件作为测试用例,批量上传至OJ平台的后台数据配置区。
3.参考代码归档:将solution.py和gen_input.py文件作为出题记录进行归档,以便未来对题目进行审查、迭代或难度调整。
【【注意】:软件使用需要输入deepseek的API KEY,请到官方网站申请。