/hypercube

Professional platform for preparing problems and testing solutions

Primary LanguageJavaScript

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) 进行开发。

这东西我从来没用过,所以可能会写出一些相当诡异的东西来。

跳票

跳票是不可能跳票的,顶多拖个一两年。