「BUAA OO Unit 1 HW1」面向测试小白的简易评测机
声明:本评测机所使用数据生成来自郭鸿宇同学,这对本评测机非常重要
Part 0 前言
笔者的配置与环境
- Windows10家庭版
- Pycharm 2021.3.2
- Anaconda1.9.7,其中用于python项目的python版本为3.6,但是应该是python3就可以
- IDEA 2021.3.2
面向人群
所有人,无论是否有python基础或者评测机搭建经验。
定位
基于本篇博客,您可以从零迅速搭建一个适合您的评测机,并且对您的项目路径没有要求。得益于数据输入输出和数据生成模块的解耦合,您可以快速迁移本评测机的输入输出,并更换您需要的数据生成模块,提高了泛用性。
Part 1 准备工作
- 若没有,则安装Anaconda,并安装一个python3的环境,这将在Part5附录部分介绍
- 若没有,则安装IDEA和Pycharm
Part 2 获取java jar包
目的
为了避免不同同学的Java项目结构目录、依赖包等的不同导致的无谓的麻烦,将Java项目打包为jar包,方法可移植性强。
过程
-
在IDEA中创建项目,并将代码置于其中,测试可以运行即可。如果有依赖包,则需要导入依赖包。
-
File->Project Structure->Artifacts->+->JAR->From modules with dependencies...


Main Class中选中程序入口类->OK->Cancel

-
修改
Name(也可以不改)->Apply->OK
-
Build->Build Artifacts,然后在其中选择刚才Name的项,然后Build

- 在项目目录/out/artifacts/
Name下可以找到生成的jar包
须知
对于本次作业,课程组提供的官方输入输出包需要被注释掉,同时需要自行将原MainClass中的Scanner切换回标准的Scanner SCANNER = new Scanner(System.in)。同时,本评测机暂不支持预解析模式输入。
Part 2 修改评测机参数
pipline.py
import sympy # 如果报错显示没有这个包,就需要导入
from xeger import Xeger
import random
import subprocess
from subprocess import STDOUT, PIPE
from gendata import genData
def execute_java(stdin):
cmd = ['java', '-jar', 'archer.jar']# 更改为自己的.jar包名
proc = subprocess.Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=STDOUT)
stdout, stderr = proc.communicate(stdin.encode())
return stdout.decode().strip()
x = sympy.Symbol('x')
X = Xeger(limit=10)
cnt = 1
while True:
cnt = cnt + 1
if cnt % 1000 == 0:
print(cnt)
poly, ans = genData()
#print(poly)
f = sympy.parse_expr(poly)
strr = exe

本文档详细介绍了如何从零搭建一个适用于初学者的Java评测机,包括环境配置、Java项目打包成jar、修改评测机参数和数据生成模块。该评测机具有高度可移植性和灵活性,能够适应不同的项目结构和数据输入输出需求。通过解耦数据生成和输入输出,方便用户根据需要替换数据生成模块。此外,还提供了配置Python+Anaconda环境的步骤,帮助读者快速入门。
最低0.47元/天 解锁文章
1736

被折叠的 条评论
为什么被折叠?



