我参加了一些在线编程比赛,发现在线评委在功能上使用得非常出色。
关于这个话题,我的大学也即将举办在线编程竞赛,我负责这个活动。我正在评估我实施在线评判的选择。当然,我可以利用一些已经可用的评委,比如SPOJ的评委,但令我感到震惊的是,我和我的一些朋友也可以尝试构建一个。如果我们失败了,我们总是可以依靠这些。
那么有人可以给我一些关于如何获得它的大纲或资源吗?如果我对评委如何实现“沙盒”有所了解,也会有所帮助。我们手头待了几个月。
更新这是我在提出关于SO本身的更多问题后2周内我的努力的结果http://github.com/anomit/loki
答案 0 :(得分:3)
我不确定在线评判是什么,但我认为这是评估程序正确性的软件。
我会为此使用一些构建,测试和分析库。示例包括Ant,JUnit和Checkstyle。
您将获取参与者提供的代码,并将其放入文件中。使用构建工具进行编译。
然后运行一些测试,验证解决方案的正确性。
最后运行一些代码分析实用程序来判断代码的质量。
当然,您可能希望将点值转换为您的需求。
答案 1 :(得分:1)
一个搜索词可能是自动编程器。
例如:
http://www.users.muohio.edu/helmicmt/autograder/index.php
http://prisms.cs.umass.edu/mcorner/autograder
答案 2 :(得分:1)
我真的不确定你的问题是什么。从头开始为法官编写设计规范并不难。
您使用给定的输入数据运行一个东西,并将输出数据提供给问题作者编写的测试程序(因为并不总是唯一的答案)。人们通过在干净的机器上远程运行来进行沙盒化。
添加:请不要进行代码分析。您有两种选择,要么在比赛期间为参赛者提供此代码分析,要么不是。
如果你这样做:他们花费最后5分钟的时间来确保没有下降点。代码在这个过程中变得更加糟糕。
如果你不这样做:你打破了“法治”:人们知道给予积分的机制(也就是说,这就是为什么你总是在问题的文本中给他们第一次测试)。 / p>
更新抱歉,我一开始并没有注意到您提出了一些具体问题。沙盒可能没有你想象的那么重要 - 在一场激烈的竞争中,代码变得公开,所以“黑客”会非常尴尬。但是,我认为我看到了一种练习,你不能直接进行i / o,文件系统或任何其他与系统的交互(他们为你编写main()
并且它总是一样的;你只写算法部分给定的输入/输出流)。你的法官应该只运行它本身从源头编译的内容。
答案 3 :(得分:0)
看看wikipedia。最后它有很多资源。