app.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. # encoding: utf8
  2. import os
  3. import shutil
  4. from flask import Flask, request, json
  5. import judgement
  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_list = data['inputList']
  25. output_list = data['outputList']
  26. if len(input_list)!=len(output_list):
  27. return {'result': "System Error",
  28. 'message': 'test data incompleted'}
  29. td_total = len(input_list)
  30. save_test_cases(input_list, output_list, td_total)
  31. src_file = save_code(language, code)
  32. rst = judgement.judge(src_file, 'testcases', td_total, time_limit, memory_limit, language)
  33. os.remove(src_file)
  34. shutil.rmtree('testcases')
  35. return rst
  36. def save_test_cases(input_list,output_list, td_total):
  37. if os.path.exists('testcases'):
  38. shutil.rmtree('testcases')
  39. os.mkdir('testcases')
  40. for i in range(1, td_total + 1):
  41. in_file = open('testcases/' + str(i) + '.in', 'w')
  42. in_file.write(input_list[i - 1])
  43. out_file = open('testcases/' + str(i) + '.out', 'w')
  44. out_file.write(output_list[i - 1])
  45. def save_code(language, code):
  46. src_file = None
  47. if language == 'c':
  48. src_file = open('main.c', 'w')
  49. elif language == 'cpp':
  50. src_file = open('main.cpp', 'w')
  51. elif language == 'java':
  52. src_file = open('Main.java', 'w')
  53. elif language == 'python':
  54. src_file = open('main.py', 'w')
  55. print(src_file.name)
  56. src_file.write(code)
  57. return src_file.name
  58. if __name__ == '__main__':
  59. app.run()