app.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import os
  2. import shutil
  3. from flask import Flask, request, json
  4. import judge
  5. app = Flask(__name__)
  6. @app.route('/')
  7. def hello_world():
  8. return 'Hello World!'
  9. '''
  10. code: string 源代码
  11. language: string 编程语言{cpp,java,c,python}
  12. timeLimit: int 时间限制
  13. memoryLimit: int 内存限制
  14. inputOutputMapping: hashmap 输入输出对
  15. '''
  16. @app.route('/api/judge', methods=['POST'])
  17. def judge():
  18. data = json.loads(request.get_data(as_text=True))
  19. code = data['code']
  20. language = data['language']
  21. time_limit = int(data['timeLimit'])
  22. memory_limit = int(data['memoryLimit'])
  23. input_output_map = data['inputOutputMapping']
  24. td_total = len(input_output_map)
  25. save_test_cases(input_output_map, td_total)
  26. src_file = save_code(language, code)
  27. rst = judge.judge(src_file, 'testcases', td_total, time_limit, memory_limit, language)
  28. os.remove(src_file)
  29. shutil.rmtree('testcases')
  30. return rst
  31. def save_test_cases(input_output_map, td_total):
  32. os.mkdir('testcases')
  33. for i in range(1, td_total+1):
  34. in_file = open('testcases/' + str(i) + '.in', 'w')
  35. in_file.write(input_output_map.keys[i-1])
  36. out_file = open('testcases/' + str(i) + '.out', 'w')
  37. out_file.write(input_output_map.values[i-1])
  38. def save_code(language, code):
  39. src_file = None
  40. if language == 'c':
  41. src_file = open('main.c', 'w')
  42. elif language == 'cpp':
  43. src_file = open('main.cpp', 'w')
  44. elif language == 'java':
  45. src_file = open('Main.java', 'w')
  46. elif language == 'python':
  47. src_file = open('main.py', 'w')
  48. src_file.write(code)
  49. return src_file
  50. if __name__ == '__main__':
  51. app.run()