diff options
author | Martin <martin@leo.fri1.uni-lj.si> | 2015-10-09 16:35:23 +0200 |
---|---|---|
committer | Martin <martin@leo.fri1.uni-lj.si> | 2015-10-09 16:35:23 +0200 |
commit | 95e107bf9e6a288969e4a83aee1a7062990f3b67 (patch) | |
tree | f69b15164a30d464f6f7b340634095716344b1ec /python/problems/functions/friendly_numbers | |
parent | fd31d7d74e58796f3a5a7c84b4b19cb4af59ef4c (diff) |
Fixed testing for most problems.
Diffstat (limited to 'python/problems/functions/friendly_numbers')
-rw-r--r-- | python/problems/functions/friendly_numbers/common.py | 31 | ||||
-rw-r--r-- | python/problems/functions/friendly_numbers/en.py | 4 | ||||
-rw-r--r-- | python/problems/functions/friendly_numbers/sl.py | 6 |
3 files changed, 32 insertions, 9 deletions
diff --git a/python/problems/functions/friendly_numbers/common.py b/python/problems/functions/friendly_numbers/common.py index 415040e..6588242 100644 --- a/python/problems/functions/friendly_numbers/common.py +++ b/python/problems/functions/friendly_numbers/common.py @@ -18,7 +18,7 @@ def divisors_sum(n): s += i return s -def friendly_number(n): +def amicable_number(n): s = divisors_sum(n) if n == divisors_sum(s): return s @@ -29,12 +29,35 @@ hint_type = { } def test(python, code): - test_in = [1] + func_name = 'amicable_number' + tokens = get_tokens(code) + if not has_token_sequence(tokens, ['def', func_name]): + return False, [{'id' : 'no_func_name', 'args' : {'func_name' : func_name}}] + + in_out = [ + (220, 284), + (284, 220), + (1010, None), + (6, None), + (2620, 2924), + (1, None), + (10, None), + (1210, 1184) + ] + + test_in = [(func_name+'(%s)'%str(l[0]), None) for l in in_out] + test_out = [l[1] for l in in_out] + + answers = python(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)): + n_correct += ans[0] == to + if ans[0] != to: + tin = test_in[i][0] + tout = to passed = n_correct == len(test_in) - tin = None - tout = None hints = [{'id': 'test_results', 'args': {'passed': n_correct, 'total': len(test_in)}}] if tin: hints.append({'id': 'problematic_test_case', 'args': {'testin': str(tin), 'testout': str(tout)}}) diff --git a/python/problems/functions/friendly_numbers/en.py b/python/problems/functions/friendly_numbers/en.py index ba740ae..c77dca1 100644 --- a/python/problems/functions/friendly_numbers/en.py +++ b/python/problems/functions/friendly_numbers/en.py @@ -1,8 +1,8 @@ # coding=utf-8 id = 233 -name = 'Friendly numbers' -slug = 'Friendly numbers' +name = 'Amicable numbers' +slug = 'Amicable numbers' description = '''\ <p>(translation missing)</p>''' diff --git a/python/problems/functions/friendly_numbers/sl.py b/python/problems/functions/friendly_numbers/sl.py index d1c15ff..51d47ae 100644 --- a/python/problems/functions/friendly_numbers/sl.py +++ b/python/problems/functions/friendly_numbers/sl.py @@ -12,12 +12,12 @@ description = '''\ <p> 220 in 284 sta prijateljski števili. Delitelji 220 so 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 in 110. Če jih seštejemo, dobimo 284. Delitelji 284 pa so 1, 2, 4, 71 in 142. Vsota teh števil pa je 220. -Napiši funkcijo <code>friendly_number(n)</code>, ki vrne prijateljsko število številu <code>n</code>, če ga ima, oz. +Napiši funkcijo <code>amicable_number(n)</code>, ki vrne prijateljsko število številu <code>n</code>, če ga ima, oz. vrne <code>None</code>, če ga nima. Primer: <pre> ->>> friendly_number(220) +>>> amicable_number(220) 284 ->>> friendly_number(222) +>>> amicable_number(222) None </pre> </p> |