我打算把 WyOJ 设计成可以给大家进行自习的系统。自习是很重要的,也占据了大部分 OIer 的大部分在役时光。所以如何利用好自习时间是很重要的。
另外,我们也需要给教练提供一个可用于训练的平台。
具体地,我打算做一个类似 Duel 但超越 Duel 的东西。传统的 Duel 是随机题目,并且双人。我们可以做多人,并且根据 AI 以及推荐算法来精准推荐一些适合这些选手的题目。我们可以根据每个人擅长的题目,推荐每个人的舒适区各一道或者更少,以此让每个人不至于无题可做的同时,可以做一些自己不一定很擅长的题目。
另外,我们可以根据每次 Duel 的结果,来更新每一个人的面孔。Duel 是比普通做题记录更珍贵的资源,因为在 Duel 中我们可以知道每个人做每道题的时间、尝试次数等等参数。
我们怎么实现呢?
首先要实现一个远端评测系统。也即,利用 HK 的云服务器将提交请求转发到洛谷,并跟踪结果。另外我们可以利用 HK 的服务器爬取题解并在本地用自己的显卡来进行分析。
没有更多难写的东西。
等到大周以及清明尽量实现一下。我觉得没有那么难。
具体实现:
相似题目推荐
相似题目推荐是基本中的基本。因为这个玩意需要一定算力,因此把他做成异步的,后面用一个 FastAPI,用 frp 之类的反代到一个子域名。
需要实现什么功能呢?
给定用户,根据他通过的题目,进行匹配,得到相似题目,并按照难度召回
给定关键词,根据关键词匹配出相似题目,并按难度筛选或者召回
然后就是前端。前端可以做在首页,这样比较帅气。按一个按钮就自动搜索相似题目。
远端题库
如前。可以用 HK 的服务器甚至是集群,用个 Redis 或者之类的简单队列维护一下,细节比较多,尤其是和 UOJ 那堆写的没法说好的评测系统结合的时候应该会不怎么舒服。最简单的方式是,提交到数据库,然后本地再跑一个消费者推送到远端的 Redis。
Duel
这个没那么难写,但是应该没法融合到原来的比赛架构里头,这玩意儿简直是屎山。最好是新开一个类似比赛的页面。

鲁ICP备2025150228号