在线评测系统在线评测系统(英語:Online Judge,缩写OJ)是一种在算法竞赛竞赛中用来测试参赛程序的在线系统,也可以用于平时练习。近年来(2016年或更早)亦出现一些针对求职面试的在线评测系统。许多OJ网站会自发组织一些竞赛。此外,OJ网站通常会设立用户排名,以用户的提交答案通过数多少或某个题目执行时间快慢为排名依据。[1] 原理算法竞赛通常采取黑盒测试,事先准备好一些测试数据,然后用它们来测试选手的程序[2]。 在在线评测系统中,用户需要提交源代码至服务器,服务器会编译用户的源代码,然后执行源代码生成的可执行文件(或用解释方式执行,或直接执行脚本文件),得到其输出的结果,并与正确结果比较。[3] 为防止攻击和恶意提交,服务器必须采取一定的安全措施,例如对用户提交的源代码实施过滤、将进程放入沙盒以进行隔离、对代码进行哈希以防止抄袭和重复提交等。[3] Virtual JudgeVirtual Judge是一种特殊的在线评测系统。与其他在线评测系统不同的是,Virtual Judge系统本身并没有任何测试数据,而是通过在其他在线评测系统中注册的机器人账号进行测试并抓取测试结果。因此可以在只有题目而没有测试数据的前提下建立竞赛。[4][5] 题目状态在提交程序之后,在线评测系统会根据题目的测评情况,返回评测结果。只有返回“Accepted”状态,才表示题目通过,选手才会获得成绩。不同OJ评测结果略有出入,但常见的评测结果大致分为以下三类。 正在评测
程序未通过
程序通过在測試過程中,只有未發生以上幾種錯誤的情況下才算做通過。
一些比賽的測試點可以給出「部分分」,例如答案正確但不够优,或者選手沒有完全完成題目所給的任務等。[2] 实例最早的在线评测系统是由西班牙Valladolid大学的Ciriaco García de Celis于1995年开发的,当时用于该校参加ACM/ICPC西南欧区域赛选拔队员。[6] 现在较为著名的在线评测系统有洛谷(页面存档备份,存于互联网档案馆),西班牙的UVaOJ、俄罗斯的SGU、Timus、Codeforces、波兰的SPOJ、美国的TopCoder、中国的POJ(北京大学)、ZOJ(浙江大学)、HDOJ(页面存档备份,存于互联网档案馆)(杭州电子科技大学)。[2] 不同群体中不同OJ使用的频率也不同,学生中常会因为教师的要求使用公开/校内OJ,为此,许多公开OJ也提供了个性化服务,如Vijos(页面存档备份,存于互联网档案馆)中的“域”服务[7],OpenJudge(页面存档备份,存于互联网档案馆)、洛谷(页面存档备份,存于互联网档案馆)、Vjudge(页面存档备份,存于互联网档案馆)中的团队服务。 在特定群体中亦有一些流行的在线评测系统,例如中國初中选手中流行的Vijos(页面存档备份,存于互联网档案馆)、进阶选手使用的BZOJ(页面存档备份,存于互联网档案馆)(现称“耒阳大视野”,注:已无法访问)、hihocoder(页面存档备份,存于互联网档案馆)、美国求职者中流行的LeetCode(页面存档备份,存于互联网档案馆)等。 参见参考文獻
|
Portal di Ensiklopedia Dunia