From 5db9e65c81bdf81ed4030040ff3666362e860d10 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Mo=C5=BEina?=
Date: Thu, 29 Oct 2015 16:08:34 +0100
Subject: Bugfix.
Added some hints.
---
python/problems/functions/body_mass_index/common.py | 17 ++++++++++++++---
python/problems/functions/body_mass_index_2/common.py | 17 ++++++++++++++---
python/problems/functions/greatest/sl.py | 6 +++---
python/problems/functions/greatest_absolutist/sl.py | 6 +++---
python/problems/functions/greatest_negative/sl.py | 4 ++--
5 files changed, 36 insertions(+), 14 deletions(-)
(limited to 'python/problems/functions')
diff --git a/python/problems/functions/body_mass_index/common.py b/python/problems/functions/body_mass_index/common.py
index 8e774be..1ff56b6 100644
--- a/python/problems/functions/body_mass_index/common.py
+++ b/python/problems/functions/body_mass_index/common.py
@@ -2,7 +2,7 @@
import re
from python.util import has_token_sequence, string_almost_equal, \
- string_contains_number, get_tokens, get_numbers, get_exception_desc
+ string_contains_number, get_tokens, get_numbers, get_exception_desc, almost_equal
from server.hints import Hint
id = 226
@@ -42,8 +42,19 @@ def test(python, code):
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:
+ corr = 0
+ if isinstance(ans[0], list) and len(ans[0]) == len(to):
+ corr = 1
+ for v1, v2 in zip(ans[0], to):
+ if not isinstance(v1, tuple) or len(v1) != len(v2):
+ corr = 0
+ break
+ if v1[0] != v2[0] or not almost_equal(v1[1], v2[1], 2):
+ corr = 0
+ break
+
+ n_correct += corr
+ if not corr:
tin = test_in[i][0]
tout = to
diff --git a/python/problems/functions/body_mass_index_2/common.py b/python/problems/functions/body_mass_index_2/common.py
index c6cf2b3..176a59d 100644
--- a/python/problems/functions/body_mass_index_2/common.py
+++ b/python/problems/functions/body_mass_index_2/common.py
@@ -2,7 +2,7 @@
import re
from python.util import has_token_sequence, string_almost_equal, \
- string_contains_number, get_tokens, get_numbers, get_exception_desc
+ string_contains_number, get_tokens, get_numbers, get_exception_desc, almost_equal
from server.hints import Hint
id = 227
@@ -42,8 +42,19 @@ def test(python, code):
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:
+ corr = 0
+ if isinstance(ans[0], list) and len(ans[0]) == len(to):
+ corr = 1
+ for v1, v2 in zip(ans[0], to):
+ if not isinstance(v1, tuple) or len(v1) != len(v2):
+ corr = 0
+ break
+ if v1[0] != v2[0] or not almost_equal(v1[1], v2[1], 2):
+ corr = 0
+ break
+
+ n_correct += corr
+ if not corr:
tin = test_in[i][0]
tout = to
diff --git a/python/problems/functions/greatest/sl.py b/python/problems/functions/greatest/sl.py
index a32aada..467de07 100644
--- a/python/problems/functions/greatest/sl.py
+++ b/python/problems/functions/greatest/sl.py
@@ -27,7 +27,7 @@ def max_val(xs):
''']
main_plan = ['''\
-Ideja: po vrsti pogledamo vse elemente in sproti hranimo največjega.
''',
+Ideja: po vrsti pogledamo vse elemente in sproti hranimo največjega.
''',
'''\
- Začnemo s prvim elementom in si ga zapomnimo kot največjega.
@@ -51,7 +51,7 @@ return_clause = ['''\
Namesto, da izpišemo rezultat, ga vračamo s stavkom return
.
''']
plan = [['''\
-Najprej poskusi napisati program (brez funkcije), ki v xs
poišče največji element
''',
+Najprej poskusi napisati program (brez funkcije), ki v xs
poišče največji element
''',
'''\
xs = [5, 1, -6, -7, 2]
@@ -106,7 +106,7 @@ hint = {
'if_clause': if_clause,
'final_hint': '''\
-Odlično, naloga rešena! Še zanimivost: Python ima funkcijo max
že vgrajeno:
+Odlično, naloga rešena! Še zanimivost: Python ima funkcijo max
že vgrajeno:
def max_val(xs):
return max(xs)
diff --git a/python/problems/functions/greatest_absolutist/sl.py b/python/problems/functions/greatest_absolutist/sl.py
index 79cfb06..dd0bd99 100644
--- a/python/problems/functions/greatest_absolutist/sl.py
+++ b/python/problems/functions/greatest_absolutist/sl.py
@@ -17,7 +17,7 @@ absolutni vrednosti v seznamu xs
.
'''
function = ['''\
-Napiši definicijo funkcije max_abs(xs)
.
''',
+Napiši definicijo funkcije max_abs(xs)
.
''',
'''\
Definicijo funkcije začnemo z def
, temu sledi ime, potem oklepaji,
v katerih naštejemo argumente funkcije, nato zaklepaj in na koncu dvopičje
''',
@@ -31,7 +31,7 @@ print (max_abs(s))
''']
main_plan = ['''\
-Plan: po vrsti pogledamo vse elemente in sproti hranimo največjega
+
Plan: po vrsti pogledamo vse elemente in sproti hranimo največjega
(glede na absolutno vrednost).
''',
'''\
@@ -96,7 +96,7 @@ hint = {
V tem primeru se lahko zgodi, da se zanka ne izteče do konca.''',
'final_hint': '''\
-Odlično, naloga rešena! Še zanimivost:
+
Odlično, naloga rešena! Še zanimivost:
Tudi to nalogo lahko rešimo s funkcijo max
:
def max_abs(xs):
diff --git a/python/problems/functions/greatest_negative/sl.py b/python/problems/functions/greatest_negative/sl.py
index 31f1fd6..38a9f08 100644
--- a/python/problems/functions/greatest_negative/sl.py
+++ b/python/problems/functions/greatest_negative/sl.py
@@ -17,7 +17,7 @@ v seznamu xs
. Če seznam nima negativnih števil, naj funkcija vrne
'''
function = ['''\
-Napiši definicijo funkcije max_neg(xs)
.
''',
+Napiši definicijo funkcije max_neg(xs)
.
''',
'''\
Definicijo funkcije začnemo z def
, temu sledi ime, potem oklepaji,
v katerih naštejemo argumente funkcije, nato zaklepaj in na koncu dvopičje
''',
@@ -31,7 +31,7 @@ print (max_neg(s))
''']
main_plan = ['''\
-Plan: po vrsti pogledamo vse elemente in sproti hranimo največje negativno
+
Plan: po vrsti pogledamo vse elemente in sproti hranimo največje negativno
število.
''',
'''\
Na začetku ne moremo največjemu nastaviti vrednosti prvega elementa v seznamu,
--
cgit v1.2.1