zoukankan      html  css  js  c++  java
  • [转]NOI_Linux Arbiter使用手册

    讲述清楚,简单易懂的Arbiter使用手册
    转载自 https://www.cnblogs.com/gengchen/p/7761565.html

    Arbiter 系统使用说明

    Overview

    • Arbiter是NOI系列赛事的官方评测软件, 由北航的相关人员开发。
    • 在OIer会经历的几场大型比赛中, 除了省选和PKUSC/THUSC不使用Arbiter评测, 其他比赛(如CTSC, WC, NOI, NOIP)全部使用Arbiter进行官方评测, 最终成绩也以Arbiter评测结果为准。
    • 网络上一直没有清晰的Arbiter使用说明....所以提供一份。

    Install

    • Arbiter内置在了NOI Linux发行版中, 可以自行前往NOI官网下载。
    • 其他下载方式尚不明确。

    Usage

    • 首先新建一场比赛, 选择一个已经创建的文件夹作为比赛文件夹, Arbiter会自行在该目录下创建几个子文件夹.
    • 几个子文件夹的功能如下:
      • evaldata: 数据文件夹,所有题目的数据直接放在这一个文件夹中, 不建单独的子文件夹, 每个文件的格式形如:test1.in, test1.ans, 注意这里的答案文件必须用.ans作为后缀.
      • 如果你的题目的原始数据是以.out作为后缀名, 你可以使用附件一中的Python批量修改。
      • players:选手源代码文件夹, 首先建立一个日期文件夹, 如day1(注: 若已经在arbiter中新建了一天的比赛, 那么这个文件夹会被自动创建), 然后把各个选手的源程序分别建立单独的文件夹放进day1文件夹。
      • 在每个选手的文件夹中, 选手需要对于每个题目创建子文件夹, 并把源程序放到子文件夹中.
      • result: 评测结果文件夹, 每个以选手名称作为名称的文件夹是评测结果文件, 不需要操作人员手动修改.
      • ps: 评测结果文件夹, 以.ps文件可视化呈现的选手测试点详细测试情况, 不需要操作人员手动修改, 在打印比赛结果按钮被操作后会自动创建.
    • 在配置完毕数据和选手源程序之后, 在考试页面建立一天的考试, 在下面再分别建立试题, 每个试题按照要求设置即可.
    • 在选手界面, 选择导入名单, 导入csv文件的选手名单, 或者直接手动建立选手. 选手的信息分为选手名称和选手编号, 其中选手编号必须和players中的文件夹名称相同.
    • 选择考试, 点击测评即可。
    • 注意这个软件设计的非常辣鸡, 测评的时候不要乱动鼠标, 不然会当机。

    Appendix

    #coding:utf-8
    import os
    def filerename(filepath,srctype,destype):
        for path,dirlist,filelist in os.walk(filepath):
            for file in filelist:
    
                #防止文件名中包含.
                fullist = file.split('.')
                namelist = fullist[0:-1]
                filename = ''
                for i in namelist:
                    filename = filename + i + '.' 
                # print (filename)
    
                curndir = os.getcwd()    #获取当前路径
                # print (curndir)
    
                os.chdir(path)            #设置当前路径为目标目录
                newdir = os.getcwd()    #验证当前目录
                # print (newdir)
    
                filetype = file.split('.')[-1]    #获取目标文件格式
    
                if filetype == srctype:    #修改目标目录下指定后缀的文件(包含子目录)
                    os.rename(file,filename+destype)
    
                if srctype == '*':        #修改目标目录下所有文件后缀(包含子目录)
                    os.rename(file,filename+destype)
    
                if srctype == 'null':    #修改目标目录下所有无后缀文件(包含子目录)
                    if len(fullist) == 1:
                        os.rename(file,file+'.'+destype)
    
                os.chdir(curndir)    #回到之前的路径
    
    filerename('.','out','ans')
    "执行python change.py即可
    

    [附]转载自另一位大佬xjzsq

    坑爹测评软件arbiter使用指南
    by xjzsq
    S1:在试题摘要的空白处单击右键点击添加考试

    S2:在考试上单击右键点击添加试题

    S3:修改试题名称为测试数据和代码的名称

    S4:修改测试数据个数/分值

    S5:修改时间限制和内存限制

    S6:选择比较方式,看情况选择,因为比较方式已经被坑了N次了
    (比较方式一般会在试题pdf第一页中的题目信息中给出,写在比较方式一栏中,
    比如“全文比较”或者“SPJ”(貌似目前没法测SPJ))

    S7:保存!!!
    一定在文件-保存那里保存一下,不然所做的更改下次打开就会被还原,已经被坑了N次了...

    S8:导入测试数据:将测试数据直接放到evaldata文件夹下
    (文件名格式必须是试题名称+测试点编号.in和.ans,如果是.out的话,
    可以用批处理改,在有.out的文件夹下建立一个文本文件,然后打开输入:
    ren *.out *.ans ,就可以转换为.ans文件)

    S9:导入选手:在试题评测中选择添加选手,然后输入姓名和编号,
    这里为了方便都输入一样的即可。

    S10:把选手的程序复制到player文件夹下,文件夹名为选手编号,
    在选手文件夹下建立三个子文件夹,名称为题目名称,在这些文件夹中
    放入对应程序,名称为 试题名称.c/cpp/pas

    S11:评测:选择评测场数,然后在选手的名字前面打勾,之后点击“评测选定选手”
    即可评测

    S12:查看结果:
    选择成绩统计,在试题评测中选好场数,然后点击“打印当日选手
    成绩”,选择打印到文件即可打印,结果打印到ps文件夹下(分场分选手的子文件夹)

    S13:测评完毕,保存工程

    注:
    1.如果闪退,则说明测试数据有问题(比如.out忘记转成.ans之类的)。
    2.测评完以后,如果选手对应的成绩还是0的话,可以到成绩统计那一栏去看一下,有可能成绩统计那里能正确显示成绩
    3.可以到result/day_/选手名/文件夹下查看评测过程的日志,可以在不用打印的情况下方便的看到评测过程。
    4.如果评测失败可以到评测日志看一下,很有可能是编译错误(目前不要在编译选项里面填任何东西,不然会编译失败...)
    5.最好在评测选手程序前先评测一下标程,确认比较方式是否适合,如果标程没有AC的话,请尝试选择其他比较方式(最好选择和答案对应的比较方式,比如如果输出一个数字,就选择单行单数字等等)
    6.在修改比较方式之后,最好先保存,然后退出arbiter再重新打开比赛,然后在确认一下比较方式是否已经改变,因为arbiter比较坑的缘故,有时改变比较方式之后会没有效果,必须重新打开工程才能确认比较方式是否已经改变。

  • 相关阅读:
    git学习
    我们碰到了大麻烦,一个新来的传教士惹恼了上帝,上帝很愤怒,要求我们把圣经(bbe.txt)背熟,直至他说哪个单词,我们就要飞快的回答出这个单词在第几行第几个单词位置。听说你是个优秀的程序员,那么髟助我们完成这个不可能的任务吧
    jquery 获取radio的值
    <label>标签 for属性
    jquery easyui datebox 的使用
    解析json对象出现$ref: "$.list[0]"的解决办法
    $.messager.show({
    jquery --- 定时器和实时进度条
    js每隔5分钟执行一次ajax请求的实现方法
    JavaScript中清空数组的三种方式
  • 原文地址:https://www.cnblogs.com/chinhhh/p/7805755.html
Copyright © 2011-2022 走看看