app.py 1.7 KB

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