Project-LemonLime / Project_LemonLime

为了 OI 比赛而生的基于 Lemon + LemonPlus 的轻量评测系统 | 三大桌面系统支持
GNU General Public License v3.0
565 stars 60 forks source link

[BUG] `char` 数组长度没开够?不会用 `std::string`?不会用 `QString`? #205

Closed yaoxi-std closed 1 year ago

yaoxi-std commented 1 year ago

试题名称:disinfectant,所有选手均「未找到源程序」。 将试题名称改短变为:dis,成功运行。

char 数组长度没开够?不会用 std::string?不会用 QString

alphagocc commented 1 year ago

在您提供确认为 char 数组开小的信息之前,暂且 close

yaoxi-std commented 1 year ago

我无所谓。这是你们的 repo。我不可能去研究你们的代码然后告诉你们究竟哪里的 char 数组开小了之类的,我还有自己的事要做。

Lemon 一堆乱七八糟的锅,并且导入题目的过程充满各种不合理的操作逻辑。我很少使用 Lemon,但当我使用它时,它总能给我带来意外的惊喜。当我导入一道子任务赋分的题目时,我需要先将测试数据以能够使用正则表达式区分的方式命名,然后在添加数据时使用正则表达式区分各个 subtask,最后还要去手动更改每个 subtask 的分值。倘若我的题目包含 Special Judge,我还需要将 spj 的源文件手动编译一份放在对应的目录下,然后在 Lemon 中填写 spj 可执行文件的路径,而这是平台相关的。在这一切结束之后,我对 std 的代码进行测试,还会遇到随机的 TLE 和 RE,甚至是上文所述的「未找到选手源程序」。当我好不容易尝试出解决方案并将题目名称以及所有测试点、源程序以及 freopen 的文件名从 disinfectant 重命名为 dis 之后,我发现自己的最后一个 subtask 是一个分值为 0 的 hack 数据,而 Lemon 对于分值为 0 的 Special Judge 测试点是无法分辨其是否被判为 Accepted 的,因此我要么删掉这个 hack 数据,要么回去修改我的题目描述以给这个 subtask 一些分数。在折腾 spj 的过程中,由于 Lemon 并不会将 spj 输出的分数自动折合百分点,我看到了 2100/100 的超高得分。当我双击它查看详情时,Lemon 闪退了。而 Lemon 并不自动保存,于是我便从头开始。而在 SYZOJ,这一切只需要一个 data.yml 就可以搞定,且不会出锅。

我只是个联考题目的搬题者,在将自己学校 OJ 的题目搬到联考所使用的 Lemon 时遇到了各种奇怪的问题。我不过是觉得,如果 Lemon 再不优化用户体验、使用逻辑以及修复各种各样奇怪的 bug,那么 Lemon 吃枣药丸。

yaoxi-std commented 1 year ago

以上是我搬题被 Lemon 创死之后的吐槽。你们不必浪费时间来回复我,这是毫无意义的,因为我已经将我电脑上的 Lemon 放进回收站并清空掉啦!而你们永远叫不醒我这个装睡的人。即使你们回复了我,我也不会再回复你们,因为 Lemon 已经与我毫不相干了。我只需要找到一个 Lemon 的替代品,如果没有,就自己写一个。你们固然可以修复我提到的那些问题,我自然也希望你们能够修复或优化它们,然而我可以选择是否给联考搬题,而 Lemon 也可以选择「成为一个优秀的评测工具」还是「成为时代的眼泪」。不想浪费文字。此贴完结。

iotang commented 1 year ago

那么请自己写一个吧,有点竞争是好事儿。 提 Pull Request 的话就更好了,不过既然你想装睡,那我也不做指望了。 但我还是想提醒你:如果你要自己写的话,不要在你自己的项目里面用 char 数组。