引言
每个在Codeforces上准备问题的人都知道Polygon,这是一款由MikeMirzayanov维护的问题准备工具。尽管功能强大,但其网页体验并不方便。为了更好地管理问题,我开发了一个名为Decagon的小型桌面应用。
应用功能
Decagon通过官方Polygon API与Polygon进行通信。每个问题对应一个本地文件夹,应用内提供了一个选项卡式编辑器,功能模块如下:
1. Info
- 时间/内存限制
- 输入/输出文件
- 交互标志
- 检查器/验证器/交互器
- 分数模式
2. Statements
- 每种语言的字段编辑(说明、输入、输出、评分、注释)
- 共享资源(图片、.sty文件)
3. Files
- 所有文件集中管理:解决方案(标记为主/正确/错误答案/TLE等)、生成器/验证器/检查器、资源头和附件
4. Tests
- 手动和脚本生成的测试
- 生成脚本
- 评分组(分数和反馈政策、依赖关系)
- 每个测试的分数
5. Validator tests & Checker tests
- 验证器接受/拒绝输入的断言
- 检查器给出预期判决的断言
6. Packages
- 构建完整/验证包并下载ZIP文件
7. Commit
- 保存工作副本的修订版
开源与兼容性
Decagon是一个开源项目(MIT许可证),并在GitHub上提供安装说明,支持Windows、macOS和Linux(但Linux上的测试尚未完成)。
已知限制
- 测试集无法从应用程序创建(需在Polygon网站创建后再拉取)
- 压力测试和访问/协作管理无API支持,仅为只读
- 仅测试有删除API,其他文件的本地删除不会影响Polygon
- 二进制文件(如说明图片)只能拉取,无法推送
在Codeforces网站上推送最终包仍然需要手动操作。欢迎提出功能请求、错误报告和PR。
总结
感谢MikeMirzayanov提供的Polygon和Codeforces!

博主点评: 这款桌面应用大大简化了CP问题的管理过程,通过将问题本地化,极大提升了开发者的工作效率,尤其是在频繁修改和验证的场景下。