先做代码安全检查,比如防止fork炸弹啥的(会消耗干系统资源) 然后编译代码,判断是否有Compile Error 然后把测试数据做为输入,运行代码,得到输出,这期间:根据运行时间,判断是否为Time Limit Exceeded超时错误。运行时候也要监控内存,超出预设内存则判为Memory Limit Exceeded 然后预期输出做比对。可以通过正则表达式来匹配。根据结果可以有Wrong Answer和Accepted,以及Presentation Error. 当然,还有其他一些问题,比如Segmentation Error段错误,以及Runtime Error等。 其实,你直接参考现有的OJ的开源实现啊。
先做代码安全检查,比如防止
fork
炸弹啥的(会消耗干系统资源)然后编译代码,判断是否有
Compile Error
然后把测试数据做为输入,运行代码,得到输出,这期间:
根据运行时间,判断是否为
Time Limit Exceeded
超时错误。运行时候也要监控内存,超出预设内存则判为Memory Limit Exceeded
然后预期输出做比对。可以通过
正则表达式
来匹配。根据结果可以有Wrong Answer
和Accepted
,以及Presentation Error
.当然,还有其他一些问题,比如
Segmentation Error
段错误,以及Runtime Error
等。其实,你直接参考现有的OJ的开源实现啊。