# encoding: utf8 import os import shutil from flask import Flask, request, json import judgement app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' ''' code: string 源代码 language: string 编程语言{cpp,java,c,python} timeLimit: int 时间限制 memoryLimit: int 内存限制 inputOutputMapping: hashmap 输入输出对 ''' @app.route('/api/judge', methods=['POST']) def judge(): data = json.loads(request.get_data(as_text=True)) code = data['code'] language = data['language'] time_limit = int(data['timeLimit']) memory_limit = int(data['memoryLimit']) input_list = data['inputList'] output_list = data['outputList'] if len(input_list) != len(output_list): return {"result_list": [{'result': "System Error"}], 'message': 'test data incompleted'} td_total = len(input_list) save_test_cases(input_list, output_list, td_total) src_file = save_code(language, code) rst = judgement.judge(src_file, 'testcases', td_total, time_limit, memory_limit, language) os.remove(src_file) shutil.rmtree('testcases') return rst def save_test_cases(input_list,output_list, td_total): if os.path.exists('testcases'): shutil.rmtree('testcases') os.mkdir('testcases') for i in range(0, td_total): in_file = open('testcases/' + str(i) + '.in', 'w') in_file.write(input_list[i]) out_file = open('testcases/' + str(i) + '.out', 'w') out_file.write(output_list[i]) def save_code(language, code): src_file = None if language == 'c': src_file = open('main.c', 'w') elif language == 'cpp': src_file = open('main.cpp', 'w') elif language == 'java': src_file = open('Main.java', 'w') elif language == 'python': src_file = open('main.py', 'w') print(src_file.name) src_file.write(code) return src_file.name if __name__ == '__main__': app.run()