From d29fed213caccc7bf2f66ed7a11b94b4bbcac3d1 Mon Sep 17 00:00:00 2001 From: Timotej Lazar Date: Thu, 6 Oct 2016 14:40:16 +0200 Subject: Python: add support for auxiliary code (like for Prolog) --- python/problems/recursion/depth_to/common.py | 41 ++++------------------------ 1 file changed, 5 insertions(+), 36 deletions(-) (limited to 'python/problems/recursion/depth_to') diff --git a/python/problems/recursion/depth_to/common.py b/python/problems/recursion/depth_to/common.py index 3aad348..0efaf76 100644 --- a/python/problems/recursion/depth_to/common.py +++ b/python/problems/recursion/depth_to/common.py @@ -7,6 +7,7 @@ from server.hints import Hint id = 20804 number = 4 visible = True +facts = 'family_tree' solution = '''\ def depthto(fr, to): @@ -18,43 +19,11 @@ def depthto(fr, to): return d + 1 ''' -precode = """ -children = { - "Adam": ["Matjaž", "Cilka", "Daniel", "Erik"], - "Aleksander": [], - "Alenka": [], - "Barbara": [], - "Cilka": [], - "Daniel": ["Elizabeta", "Hans"], - "Erik": [], - "Elizabeta": ["Ludvik", "Jurij", "Barbara", "Herman", "Mihael"], - "Franc": [], - "Herman": ["Margareta"], - "Hans": [], - "Jožef": ["Alenka", "Aleksander", "Petra"], - "Jurij": ["Franc", "Jožef"], - "Ludvik": [], - "Margareta": [], - "Matjaž": ["Viljem"], - "Mihael": [], - "Petra": [], - "Tadeja": [], - "Viljem": ["Tadeja"], -} - -age = { - "Adam": 111, "Matjaž": 90, "Cilka": 88, "Daniel": 85, "Erik": 83, - "Viljem": 58, "Tadeja": 20, "Elizabeta": 67, "Hans": 64, "Ludvik": 50, - "Jurij": 49, "Barbara": 45, "Herman": 39, "Mihael": 32, "Franc": 30, - "Jožef": 29, "Margareta": 10, "Alenka": 5, "Aleksander": 7, "Petra": 9 -}""" - hint_type = { 'final_hint': Hint('final_hint') } -def test(python, code): - code = precode + "\n" + code +def test(python, code, aux_code=''): func_name = 'depthto' tokens = get_tokens(code) if not has_token_sequence(tokens, ['def', func_name]): @@ -75,7 +44,7 @@ def test(python, code): for l in in_out] test_out = [l[1] for l in in_out] - answers = python(code=code, inputs=test_in, timeout=1.0) + answers = python(code=aux_code+code, inputs=test_in, timeout=1.0) n_correct = 0 tin, tout = None, None for i, (ans, to) in enumerate(zip(answers, test_out)): @@ -96,11 +65,11 @@ def test(python, code): return passed, hints -def hint(python, code): +def hint(python, code, aux_code=''): tokens = get_tokens(code) # run one test first to see if there are any exceptions - answer = python(code=code, inputs=[(None, None)], timeout=1.0) + answer = python(code=aux_code+code, inputs=[(None, None)], timeout=1.0) exc = get_exception_desc(answer[0][3]) if exc: return exc -- cgit v1.2.1