Hypercube
动机
Hypercube 是 EOJ Polygon 的升级版,这是一个专门用来开发题目、测试代码的工具。其前身, Polygon,以其 bug 之多、不稳定、功能复杂而臭名昭著,而且有很多功能都没有实现,比如交互题、捆绑测试等等。
根据计划,Hypercube 是一个在本地运行的工具。运行方式很像是 jupyter-notebook:需要在本地运行一个服务器,
然后在浏览器中进行操作。我们可以使用 git
将本地生成好的题目传到服务器上,也可以进行版本控制。
传到服务器上的题目,会被放置在题目仓库中。要使更新生效,要在 OJ 题目的页面上点击「更新题目」,才会更新题面、 判题数据等一系列内容。所以这一更新其实与可能会发生的判题机(沙箱)重写并不相干,而且目前看来沙箱的重写计划很有可能摸了。
要实现的 Feature
- 写题面(Markdown 预览),目前看来不需要支持多份题面
- 但是要支持自定义 Section
- 可能要支持 Markdown, TeX, HTML 三种创作格式
- 管理数据(调换顺序、快速删除、快速编辑等等)
- 运行:
- 方便快速地生成输入文件
- 方便快速地用标程生成输出文件
- 对拍(暴力测试)
- 横向、纵向比较多份提交在各测试点上的性能
- 验证输入合法性
- 跑交互题
- 支持捆绑测试
- 还是要支持那种不推荐使用的填空题(因为沙箱重写摸了)
- 可能要支持导出成 ProblemArchive
- 现在设计的格式是一个
problem.xml
加若干文件下,和 Codeforces Polygon 更像
- 现在设计的格式是一个
开发
使用 Spring Boot + React (Material-UI) 进行开发。
这东西我从来没用过,所以可能会写出一些相当诡异的东西来。
跳票
跳票是不可能跳票的,顶多拖个一两年。