generate-judge-contest

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Generate a judge contest

生成 Judge 竞赛

Read references/contest-format.md before authoring any file.
  1. Confirm the contest parameters: contest id and name, target course and lecture, divisions (each with open/close datetimes), which concepts the contest covers, the number of problems (4-6 is typical), and target programming language(s). The contest belongs at
    <courseId>/<lectureId>/<contestId>.contest.yaml
    , and its problems belong under the same course's
    problems/
    directory. If any are missing, ask before generating when the user is available; otherwise choose reasonable values from the context and list them as open decisions in the final report.
  2. Plan the problem set as drafts (id, name, overview, difficulty, score):
    • Use only concepts the learners have already studied in the covered materials.
    • Span difficulties from 初級 to harder levels so every participant can solve something and strong participants stay challenged; order problems from easy to hard.
    • Assign scores increasing with difficulty (e.g. 100, 200, 300, ...).
  3. Generate each problem directory by following the generate-judge-problems skill workflow (model answer first, run it to produce
    .out
    files unless the custom judge does not compare stdout, cross-check with a second language, validate).
  4. Write
    <contestId>.contest.yaml
    per references/contest-format.md, listing every division and every problem with its score. Place the file inside the lecture directory when the contest belongs to a course.
  5. Validate with the
    exercode-problem
    CLI (it ships with
    @exercode/problem-utils
    , which must be a declared repository dependency — see setup-exercode-course-repository) and fix until clean; rerun after every fix until both commands report success:
    bash
    bunx exercode-problem validate-problem <problemDir>...
    bunx exercode-problem validate-contest <contestYamlPath> --problems-dir <problemsDir>
    Address warnings too unless they are intentional; if you keep a warning, tell the user why in the final report.
  6. Report the contest yaml path, the problem list with scores and difficulties, and any open decisions (e.g. datetimes or scores you chose, intentionally kept warnings).
编写任何文件前,请阅读 references/contest-format.md。
  1. 确认竞赛参数:竞赛 ID 和名称、目标课程与讲次、各组别及其开放/关闭日期时间、竞赛涵盖的概念、题目数量(通常为 4-6 道)以及目标编程语言。竞赛文件应位于
    <courseId>/<lectureId>/<contestId>.contest.yaml
    ,题目应放在同一课程的
    problems/
    目录下。如果用户可联系且有任何参数缺失,应在生成前询问;否则根据上下文选择合理值,并在最终报告中将其列为待定事项。
  2. 先以草稿形式规划题集(ID、名称、简介、难度、分值):
    • 仅使用学习者在相关材料中已经学过的概念。
    • 难度应从初级覆盖到更高级别,使每位参与者都能解出部分题目,同时让能力较强的参与者仍有挑战;题目应按从易到难的顺序排列。
    • 分值应随难度提高而增加(例如 100、200、300……)。
  3. 按照 generate-judge-problems skill 工作流生成每个题目目录(先生成标准答案并运行以产生
    .out
    文件;仅当自定义 judge 会比较 stdout 时执行此步骤;然后使用第二种语言交叉核验并验证)。
  4. 根据 references/contest-format.md 编写
    <contestId>.contest.yaml
    ,列出每个组别以及每道题目及其分值。如果竞赛归属于某门课程,请将该文件放在对应的讲次目录中。
  5. 使用
    exercode-problem
    CLI 进行验证(该 CLI 随
    @exercode/problem-utils
    提供,而
    @exercode/problem-utils
    必须声明为仓库依赖,参见 setup-exercode-course-repository),并修复问题直至验证结果干净。每次修复后都要重新运行,直到两条命令均报告成功:
    bash
    bunx exercode-problem validate-problem <problemDir>...
    bunx exercode-problem validate-contest <contestYamlPath> --problems-dir <problemsDir>
    除非警告是有意保留,否则也应一并处理;如果保留某项警告,请在最终报告中说明原因。
  6. 报告竞赛 yaml 文件路径、题目列表及其分值和难度,以及所有待定事项(例如所选的日期时间或分值,以及有意保留的警告)。