从头开始创建在线评判

时间:2009-06-19 19:42:58

标签: web-applications

我参加了一些在线编程比赛,发现在线评委在功能上使用得非常出色。

关于这个话题,我的大学也即将举办在线编程竞赛,我负责这个活动。我正在评估我实施在线评判的选择。当然,我可以利用一些已经可用的评委,比如SPOJ的评委,但令我感到震惊的是,我和我的一些朋友也可以尝试构建一个。如果我们失败了,我们总是可以依靠这些。

那么有人可以给我一些关于如何获得它的大纲或资源吗?如果我对评委如何实现“沙盒”有所了解,也会有所帮助。我们手头待了几个月。

更新这是我在提出关于SO本身的更多问题后2周内我的努力的结果http://github.com/anomit/loki

4 个答案:

答案 0 :(得分:3)

我不确定在线评判是什么,但我认为这是评估程序正确性的软件。

我会为此使用一些构建,测试和分析库。示例包括AntJUnitCheckstyle

您将获取参与者提供的代码,并将其放入文件中。使用构建工具进行编译。

  • 构建失败:0分
  • 构建成功并发出警告1点
  • 构建成功而没有警告2分

然后运行一些测试,验证解决方案的正确性。

  • 每次通过测试:1分

最后运行一些代码分析实用程序来判断代码的质量。

  • 每次投诉的减去1分

当然,您可能希望将点值转换为您的需求。

答案 1 :(得分:1)

答案 2 :(得分:1)

我真的不确定你的问题是什么。从头开始为法官编写设计规范并不难。

您使用给定的输入数据运行一个东西,并将输出数据提供给问题作者编写的测试程序(因为并不总是唯一的答案)。人们通过在干净的机器上远程运行来进行沙盒化。

添加:请不要进行代码分析。您有两种选择,要么在比赛期间为参赛者提供此代码分析,要么不是。

  • 如果你这样做:他们花费最后5分钟的时间来确保没有下降点。代码在这个过程中变得更加糟糕。

  • 如果你不这样做:你打破了“法治”:人们知道给予积分的机制(也就是说,这就是为什么你总是在问题的文本中给他们第一次测试)。 / p>

更新抱歉,我一开始并没有注意到您提出了一些具体问题。沙盒可能没有你想象的那么重要 - 在一场激烈的竞争中,代码变得公开,所以“黑客”会非常尴尬。但是,我认为我看到了一种练习,你不能直接进行i / o,文件系统或任何其他与系统的交互(他们为你编写main()并且它总是一样的;你只写算法部分给定的输入/输出流)。你的法官应该只运行它本身从源头编译的内容。

答案 3 :(得分:0)

看看wikipedia。最后它有很多资源。