Tuack-NG:新一代出题工具
Pulsar2021 · · 科技·工程
:::warning[Tuack 用户须知]{open} Tuack-NG 并非 Tuack 的直接替代品。两者功能存在差异,且 Tuack-NG 与 Tuack 在很多方面完全不兼容。
但是,我们提供了迁移工具,可以在一定程度上减少迁移难度,您可以参见 Tuack-NG 的文档。 :::
(上面的图是可以点的,你发现了吗?)
Tuack-NG 是一套辅助 OI/ICPC 出题的工具包,旨在帮助出题人以更加便携的方式协作出题。它借鉴了 Tuack 的理念,并基于 Rust 进行了全新开发。
快速上手
参照【Tuack-NG 文档 - 安装】安装 Tuack-NG,并参照剩余文档学习 Tuack-NG 的使用方式。
Tuack 使用者可以参照【Tuack-NG 文档 - 从 Tuack 迁移】,以将 Tuack 项目迁移到 Tuack-NG 项目。
功能一览
渲染题面
模拟赛还在使用 Word/Markdown/LaTeX 渲染题面吗?使用 Tuack-NG,你可以获得和 NOI 系列赛事几乎相同的 PDF,而只需编写 Markdown。(需要安装 Typst)
同时,您也可以将题面导出为 LOJ/UOJ 兼容的格式(洛谷 In Progress)。
另外,借助宏系统,您可以在题面中引用配置的数据范围/样例/表格,杜绝了修改一处却忘记另一处的风险。
测试
想测试自己的 Std,却必须手动运行/使用 CCR 或 Lemon 评测?赛时才发现自己想要卡掉的错解 AC 了?
使用 Tuack-NG,你可以编写测试用例来确保自己的数据(或样例)与你的预期一致。你可以编写多个正解,并设置预期为满分;你也可以编写暴力,并预期它们能获得适当的部分分。
同时,Tuack-NG 支持子任务,您可以将数据分为多个子任务,并在需要的情况下进行捆绑测试。
*该功能不能替代评测系统,赛后的评测不建议在 Tuack 上进行。
数据生成
还在手动/使用脚本生成数据吗?使用 Tuack-NG,你可以编写数据生成器并声明需要的参数,随后 Tuack-NG 将接管剩下的工作——为每个测试点(或样例)传入参数生成输入,并调用 Std 生成输出。
并且,Tuack-NG 会保留随机数种子,使得您的数据生成器无论任何时间与地点,都能产生相同的输出,除非您明令重置种子。
导出
在每个评测平台上(比如 Lemon,Arbiter)上都需要手动配置一遍数据?Tuack-NG 可以帮助你完成这项工作,以及下发文件的生成。
*目前支持平台较少,我们将在下一个版本进行扩充。
格式检查/格式化
Tuack-NG 可以检测一些题面中不符合规范的内容,并在可能的情况下进行修复。
批量修改配置文件
Tuack-NG 可以批量修改同一比赛日下/同一比赛下的各个子配置文件的字段,帮助您减少重复工作。
与 Tuack 对比
| 功能 | Tuack | Tuack-NG |
|---|---|---|
| 渲染题面 | ✅ | ✅ 部分不常用/老旧目标没有迁移 |
| 测试 | ✅ | ✅ 支持更多语言,且数据点配置更完备 |
| 数据生成 | ✅❌ 基于 Python,命令行难以使用 | ✅ 基于 C++,功能完备,可以使用任何数据生成库(如 Testlib) |
| 导出 | ✅ | ✅ 部分基于网络的功能没有迁移,但对应功能基本过时 |
| 格式检查/格式化 | ✅❌ 基于词法分析/文法分析 + 正则 | ✅ 基于 AST + 正则,覆盖更广 |
| 批量修改配置文件 | ✅ | ✅ |
兼容性
Tuack-NG 兼容 Linux 与 Windows。虽然开发者不常用 Windows,但我们会尽可能保证 Windows 下的兼容性和可用度。
以下是经过测试的机器:
- Windows 10 & 11
- Ubuntu 25.10
- Arch Linux(以及其上使用 Nix 运行)
- NixOS(使用 Flake 运行)
同时,本工具可以在 macOS 上使用 Nix 通过构建,但是没有环境来进行测试。您可以进行尝试,但应当预期可能无法正常工作。
Tuack-NG 不兼容 在 Intel 芯片上运行的 macOS,因为工具链已经放弃对它的支持。
未来展望
未来,我们可能会使 Tuack-NG 能够成为 VSCode 插件,以面向更多的用户,并增加易用性。
同时,我们将会进一步扩充可渲染与导出的目标,并可能在未来引入插件系统,以允许用户在不依赖我们的开发节奏的情况下拓展 Tuack-NG 的功能。
致谢
- Tuack —— 本项目的设计思想来源,并借鉴了部分代码与接口风格。
- CNOI Statement Generator —— 本项目的 NOI 模板来自此项目。
许可证
Copyright (C) 2025-2026 Tuack-NG Develop Team.
本项目以 Affero General Public License 3.0 或更高版本获得许可。
对上游项目的版权声明详见 README。
:::align{center}
🌟 如果这个项目对你有帮助,欢迎点亮 Star ~
:::