| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- # 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': "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.name)
- 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(1, td_total + 1):
- in_file = open('testcases/' + str(i) + '.in', 'w')
- in_file.write(input_list[i - 1])
- out_file = open('testcases/' + str(i) + '.out', 'w')
- out_file.write(output_list[i - 1])
- 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')
- src_file.write(code)
- return src_file
- if __name__ == '__main__':
- app.run()
|