OJ测试数据生成:用 cyaron 自动产出 .in/.out 测试点

前言

给 OJ 或算法题出题时,测试数据往往比写题面更耗时:要覆盖边界、控制数据规模,还要用标程跑出对应的 .out。手工写生成脚本、再批量跑标程,步骤重复且容易漏点。下面介绍 SkillHub 上的社区 Skill「OJ测试数据生成」,它把「读题面 → 分析题型 → 生成数据 → 跑标程」收进 Agent 工作流,默认一次产出 10 组 .in/.out,并基于 cyaron 编写生成逻辑。

这是什么

「OJ测试数据生成」是坐标为 @user_b89a4d0a/oj-data-generator 的 Agent Skill,当前版本 1.3.1,来源为 community,发布者为 user_b89a4d0a,在 SkillHub 中归类为 dev-programming。页面标注 requires_api_key=false,安装后无需额外 API Key。

一句话定位:根据题目描述自动分析题型,生成测试输入、用标程得到输出,并以文件夹形式交付测试点;仅当用户明确要求时才打包为 ZIP。

官方入口:

  • SkillHub 展示页:https://www.skillhub.cn/skills/user_b89a4d0a/oj-data-generator
  • API 坐标页:https://api.skillhub.cn/user_b89a4d0a/oj-data-generator

核心功能

以下能力均来自 Skill 官方简介与 SkillHub 页面说明,未经核实的细节不展开。

  1. 题型分析:根据用户提供的题目描述,推断适合的测试数据形态与规模策略。
  2. 固定规模产出:默认生成 10 组 测试数据,每组包含 .in 与 .out 文件。
  3. cyaron 生成脚本:数据生成逻辑基于 cyaron 库编写,便于控制随机图、序列、范围等常见 OJ 数据模式。
  4. 标程驱动答案:在生成 .in 后运行用户提供的标程(标准程序),产出对应 .out,避免手算或复制粘贴答案。
  5. 输出形态:默认将测试点写入文件夹;只有用户明确要求打包时,才输出 ZIP。

Skill 会在用户提到造数据、出测试点、生成 OJ 测试数据、编写 cyaron 脚本、做对拍数据,或使用「测试数据 / 测试点 / test data / data generation / cyaron / 造数据 / 出题」等表述时被选用。

安装与启用

安装方式遵循 SkillHub 官方文档 SkillHub 安装与优先源配置。页面亦写明:请根据该文档安装 @user_b89a4d0a/oj-data-generator。

1、检查或安装 skillhub CLI

先确认本机是否已有 CLI:

command -v skillhub && skillhub --version

若未安装,可按官方推荐执行完整安装(CLI 与默认 Skill):

curl -fsSL https://skillhub-1388575217.cos.ap-guangzhou.myqcloud.com/install/install.sh | bash

仅需 CLI 时:

curl -fsSL https://skillhub-1388575217.cos.ap-guangzhou.myqcloud.com/install/install.sh | bash -s -- --cli-only

2、安装本 Skill 到当前 Agent 的 skills 目录

官方要求:安装时必须用 --dir 指向当前 Agent 正在使用的 skills 目录,否则默认会装到 ./skills/,Agent 可能无法加载。

skillhub install @user_b89a4d0a/oj-data-generator --dir <skills 目录>

常用客户端的 skills 路径(摘自 SkillHub 安装文档):

客户端 skills 目录
Cursor ~/.cursor/skills/
Claude Code ~/.claude/skills/
Codex ~/.codex/skills/ 或项目下的 .agents/skills/
Windsurf ~/.codeium/windsurf/skills/ 或 .windsurf/skills/

安装完成后,按你所用客户端的惯例重启或刷新 Agent,使新 Skill 生效。Codex CLI、Claude Code 与 Cursor 的差异仅在于 --dir 目标路径不同,安装命令本身一致。

典型用法

公开资料未附带独立命令行子工具;使用方式是在已启用该 Skill 的 Agent 对话中完成出题流程。可按下述顺序组织输入,便于 Agent 按 Skill 约定执行。

  1. 提供完整题面:输入输出格式、数据范围、特殊约束(如保证有解、图是否连通等)。
  2. 提供标程:可编译运行的标准解法源码,以及编译/运行方式(如 g++ -O2 -std=c++17)。
  3. 说明数据需求(可选):若需要少于或多于默认 10 组、或需要某种强度分布,在对话中写清;未说明时按 Skill 默认 10 组处理。
  4. 确认交付形式:默认会得到一个包含多组 .in/.out 的目录;需要 ZIP 时再明确说「打包成 zip」。

经过上面的步骤,Agent 应生成基于 cyaron 的数据脚本、写出测试输入,并调用标程生成 .out。本地环境需能安装并运行 cyaron(Python)以及标程所需的编译器或运行时,否则生成或跑标程会失败;具体依赖版本以 Agent 生成的脚本为准,本文未收录 Skill 包内未公开的固定版本号。

适用场景与注意

适合谁

  • 算法竞赛、校内 OJ、对拍验证阶段的出题者与助教。
  • 已熟悉题面与标程,希望把「写 generator + 批量出点」交给 Agent 的开发者。

使用上需注意

  • 标程必须正确且与题面一致;Skill 按标程输出写 .out,标程有误会导致全部测试点答案错误。
  • 默认 10 组 数据;更大规模或特殊数据形态需在对话中额外说明。
  • 不要默认要 ZIP;只有明确打包需求时才应要求 ZIP,以免多一步无意义的归档。
  • SkillHub 统计(截至页面展示):评分 100000,下载 708 次;社区 Skill,维护节奏以发布者为准。

结尾

「OJ测试数据生成」把 cyaron 数据生成、标程跑点和 .in/.out 目录交付串成一条可重复的 Agent 流程,适合从题面快速落到可用的 OJ 测试点。安装与坐标以 SkillHub 为准:

https://www.skillhub.cn/skills/user_b89a4d0a/oj-data-generator

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye