"source": "import json\nimport re\n\ndef extract_numbers_from_expression(expression: str):\n return [int(num) for num in re.findall(r'-?\\d+', expression)]\n\ndef grade(sample, item) -> float:\n expression_str = sample['output_json']['expression']\n try:\n math_expr_eval = eval(expression_str)\n except Exception:\n return 0\n expr_nums_list = extract_numbers_from_expression(expression_str)\n input_nums_list = [int(x) for x in json.loads(item['nums'])]\n if sorted(expr_nums_list) != sorted(input_nums_list):\n return 0\n sample_result_int = int(sample['output_json']['result'])\n item_result_int = int(item['target'])\n if math_expr_eval != sample_result_int:\n return 1\n if sample_result_int == item_result_int:\n return 5\n if abs(sample_result_int - item_result_int) <= 1:\n return 4\n if abs(sample_result_int - item_result_int) <= 5:\n return 3\n return 2""
0 commit comments