Решение на Родословно дърво от Марио Даскалов

Обратно към всички решения

Към профила на Марио Даскалов

Резултати

  • 5 точки от тестове
  • 0 бонус точки
  • 5 точки общо
  • 9 успешни тест(а)
  • 2 неуспешни тест(а)

Код

class Person:
def __init__(self, name, birth_year, gender, father=None, mother=None):
self.name = name
self.birth_year = birth_year
self.gender = gender
self.father = father
self.mother = mother
if mother is not None:
mother.children_set.add(self)
if father is not None:
father.children_set.add(self)
self.children_set = set()
def get_siblings(self, gender):
siblings = {child for child in self.mother.children_set
if child.gender == gender}
siblings = siblings.union({child for child in self.father.children_set
if child.gender == gender})
return list(siblings)
def get_brothers(self):
return self.get_siblings('M')
def get_sisters(self):
return self.get_siblings('F')
def children(self, gender=None):
if gender is None:
return list(self.children_set)
else:
return [child for child in self.children_set
if child.gender == gender]
def is_direct_successor(self, other_person):
return other_person.mother is self or other_person.father is self

Лог от изпълнението

.....FF....
======================================================================
FAIL: test_has_no_brother (test.PersonTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20130408-29081-158wczl/test.py", line 38, in test_has_no_brother
    self.assertEqual(self.first_son.get_brothers(), [])
AssertionError: Lists differ: [<solution.Person object at 0x... != []

First list contains 1 additional elements.
First extra element 0:
<solution.Person object at 0xb78ac48c>

- [<solution.Person object at 0xb78ac48c>]
+ []

======================================================================
FAIL: test_has_no_sister (test.PersonTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "lib/language/python/runner.py", line 60, in thread
    raise it.exc_info[1]
  File "lib/language/python/runner.py", line 48, in run
    self.result = func(*args, **kwargs)
  File "/tmp/d20130408-29081-158wczl/test.py", line 35, in test_has_no_sister
    self.assertEqual(self.first_daughter.get_sisters(), [])
AssertionError: Lists differ: [<solution.Person object at 0x... != []

First list contains 1 additional elements.
First extra element 0:
<solution.Person object at 0xb78acaec>

- [<solution.Person object at 0xb78acaec>]
+ []

----------------------------------------------------------------------
Ran 11 tests in 0.010s

FAILED (failures=2)

История (1 версия и 0 коментара)

Марио обнови решението на 01.04.2013 15:43 (преди около 11 години)

+class Person:
+
+ def __init__(self, name, birth_year, gender, father=None, mother=None):
+ self.name = name
+ self.birth_year = birth_year
+ self.gender = gender
+ self.father = father
+ self.mother = mother
+ if mother is not None:
+ mother.children_set.add(self)
+ if father is not None:
+ father.children_set.add(self)
+ self.children_set = set()
+
+ def get_siblings(self, gender):
+ siblings = {child for child in self.mother.children_set
+ if child.gender == gender}
+ siblings = siblings.union({child for child in self.father.children_set
+ if child.gender == gender})
+ return list(siblings)
+
+ def get_brothers(self):
+ return self.get_siblings('M')
+
+ def get_sisters(self):
+ return self.get_siblings('F')
+
+ def children(self, gender=None):
+ if gender is None:
+ return list(self.children_set)
+ else:
+ return [child for child in self.children_set
+ if child.gender == gender]
+
+ def is_direct_successor(self, other_person):
+ return other_person.mother is self or other_person.father is self