summaryrefslogtreecommitdiff
path: root/python/problems/functions/friendly_numbers
diff options
context:
space:
mode:
authorMartin <martin@leo.fri1.uni-lj.si>2015-10-09 16:35:23 +0200
committerMartin <martin@leo.fri1.uni-lj.si>2015-10-09 16:35:23 +0200
commit95e107bf9e6a288969e4a83aee1a7062990f3b67 (patch)
treef69b15164a30d464f6f7b340634095716344b1ec /python/problems/functions/friendly_numbers
parentfd31d7d74e58796f3a5a7c84b4b19cb4af59ef4c (diff)
Fixed testing for most problems.
Diffstat (limited to 'python/problems/functions/friendly_numbers')
-rw-r--r--python/problems/functions/friendly_numbers/common.py31
-rw-r--r--python/problems/functions/friendly_numbers/en.py4
-rw-r--r--python/problems/functions/friendly_numbers/sl.py6
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>