LemonLime 使用指南

· · 个人记录

摘要

本文针对 OI 比赛的评测问题,对竞赛评测器 LemonLime 进行了简单介绍,讲述了它的基本用法,评估了它的优缺点,并给出了一些简单应用实例。

简介

LemonLime 是为了 OI 比赛而生的基于 Lemon + LemonPlus [1] 的轻量评测系统,跨平台。

在 OI 生活中,我们并不常常会遇到需要线下评测的时候。这时通常有以下三种选择:

  1. 自己手写程序或命令行脚本,依次评测每个选手并打分;
  2. 在 NOI Linux 下使用“下一代测评系统”[2] Arbiter 评测;
  3. 使用 Windows 下的某款软件评测。

其中,方法 1 过于麻烦,而且自己造了轮子,没有充分利用网络的资源;方法 2 需要用 NOI Linux,有可能要装虚拟机,而且 Arbiter 使用不方便。

所以,最简单的就是方法 3。Windows 下的评测软件主要有 Cena 和 LemonLime。其中后者较新,界面整洁,使用方法更简单,所以介绍 LemonLime。

一、下载·安装·配置

LemonLime 在 Github 上更新。

如图,通过 https://github.com/Project-LemonLime/Project_LemonLime/releases/latest 进入最新版的发布页面。

选择 lemon-win-x64-Release.zip 以下载最新版,选择 lemon-win-qt6-x64-Release.zip 以下载用 Qt 6 编译的版本。

如图,把下载的压缩文件复制到要安装在的文件夹(如 C:\Program Files)下,右键单击之,选择“Extract here”(因为一打开压缩文件看到的是一个大文件夹)。

如果你没有压缩软件,就选择图中的“全部解压缩”,把文件解压到诸如 C:\Program Files 这样的文件夹。但不要写 C:\Program Files\Lemon 这样的文件夹名,不然就会有两层文件夹包着里面的文件。

可以通过下图中的方法将其固定在开始菜单或创建一个桌面快捷方式。

双击打开,首先看到的是配置设置页面。我们依着 NOI 系列比赛的样子,勾选 gccg++fpc,进入下一步。

我们告诉 LemonLime 编译器主程序所在的路径,进入下一步。注意一定要勾选“添加建议配置”。

单击“Finish”就完成了。

在这之后,暂时关掉欢迎页面,选择“工具”>“设置”>“编译器”,对于三个编译器,选择“高级选项”后按以下步骤操作(开大评测时栈空间):

下面是图片(以 gcc)为例:

二、基本使用

1. 建立比赛与题目

打开欢迎页面选择“新建”,或点击导航栏上的“文件”>“新建比赛”,输入比赛标题、文件名(不带后缀名)、保存目录,就可以新建一场比赛。

特别强调:请保证比赛目录只有 ASCII 字符,否则可能无法评测

若不小心关闭了程序,则可以在欢迎页面选择“打开”找到建立的比赛。

在比赛页面,我们右键单击左侧框,选择“添加新试题”,就可添加一道评测试题。

如图,我们添加一道试题 add,就是输入两个整数,输出它们的和。

如果是传统题、NOI 风格,则只需要在源文件名称输入 add,其他会自动为你填好。

需要在右侧勾上“在子文件夹寻找”,这是 NOIP 比赛的一般要求。

还需要在下方设置三种编译器为我们刚才设置好的配置

2. 配置数据和选手

如图,我造了 10 组数据,放在了 比赛文件夹\data\源文件名称 下(当然,也可以直接放在 data 下,待会写的数据文件路径就要改变)。

之后右键单击左侧框里的 add,选择“添加多组测试点”。

输入时空限制的下一步最为关键,需要写明输入、输出文件的文件名格式(路径是 data 下的相对路径),并单击加号输入正则表达式 \d*(表示一个整数)。

然后就添加成功了。你应该在左侧的框内看到 10 个测试点。

选手的文件夹要放在 比赛文件夹\source 下。如图,其中 std 用的是 C++,cpascal 分别用对应的语言,oddy 用的是 C++,但是会输出 a-b

之后在比赛页面单击“选手”,点击“刷新”,就能看到选手列表了。

3. 评测·导出

单击“测试未测试”或“测试全部”都可以测试。

结果如图所示。

若要导出成绩,可选择导航栏“控制”中的对应选项。

三、评估

1. 优势

2. 不足

四、实例

  1. 线下比赛

让学生用 U 盘或通过“极域”将源代码复制到 source 下,启动评测即可。

  1. 线上 OI 赛制比赛

在本机建立 FTP 服务器,给学生一个只有添加文件权限的账号,让学生拖拽源代码到服务器中。到时间后启动评测。

  1. 线上 IOI/ACM 赛制比赛

可能需要自己写服务器,让学生发送评测请求,还需调用 LemonLime 的 API(目前没有)以实现即时选择指定选手、指定题目评测。

参考文献

[1] iotang.Project LemonLime (Beta)[EB/OL].(2022-11-16)[2023-01-12].https://github.com/Project-LemonLime/Project_LemonLime

[2] 吕凯风.下一代测评系统.[R/OL].[2023-01-12].https://max.book118.com/html/2021/0511/8013105022003101.shtm