from prompt import prompt import re from utils import generate_response, run_code def post_process_code(code, question): parameters = code.split("\n")[0].split("def solution")[-1][1:-2].split(",") if '' in parameters: parameters.remove('') values = re.findall(r"[-+]?\d*\.\d+|\d+", question)[:len(parameters)] values = [int(v) for v in values] return list(zip(parameters, values)) def solve_pal(question): question = question.strip() query = prompt.format(question=question).strip() code = generate_response(query, 0.9) code = code.split("def solution():")[-1].strip() code = "def solution():\n" + code # code preprocessing arguments = post_process_code(code, question) arg_string = "" for param, val in arguments: arg_string += f"{param}={val}," func_call = f"\nprint(solution({arg_string[:-1]}))" code += func_call # code running if "input(" in code: return None, code pred = None try: pred = run_code(code) except Exception as ex: return None, code return pred, code