Решение на Родословно дърво от Светлана Величкова

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

Към профила на Светлана Величкова

Резултати

  • 6 точки от тестове
  • 0 бонус точки
  • 6 точки общо
  • 11 успешни тест(а)
  • 0 неуспешни тест(а)

Код

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._children = []
self.father = father
self.mother = mother
if father:
father._children += [self]
if mother:
mother._children += [self]
def get_brothers(self):
return self.get_siblings("M")
def get_sisters(self):
return self.get_siblings("F")
def get_siblings(self, gender):
siblings = []
if self.father:
siblings += self.father.children(gender)
if self.mother:
siblings += self.mother.children(gender)
return sorted(set(siblings) - {self})
def children(self, gender=None):
if gender:
return list(filter(lambda x: x.gender == gender, self._children))
return self._children
def is_direct_successor(self, person):
return person in self._children

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

...........
----------------------------------------------------------------------
Ran 11 tests in 0.006s

OK

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

Светлана обнови решението на 29.03.2013 21:19 (преди около 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._children = []
+ self.father = father
+ self.mother = mother
+ if father:
+ father._children += [self]
+ if mother:
+ mother._children += [self]
+
+ def get_brothers(self):
+ brothers = []
+ if self.father:
+ brothers += filter(lambda x: x.gender == "M",
+ self.father._children)
+ if self.mother:
+ brothers += filter(lambda x: x.gender == "M",
+ self.mother._children)
+ return sorted(set(brothers) - {self})
+
+ def get_sisters(self):
+ sisters = []
+ if self.father:
+ sisters += filter(lambda x: x.gender == "F", self.father._children)
+ if self.mother:
+ sisters += filter(lambda x: x.gender == "F", self.mother._children)
+ return sorted(set(sisters) - {self})
+
+ def children(self, gender=None):
+ if gender:
+ return list(filter(lambda x: x.gender == gender, self._children))
+ return self._children
+
+ def is_direct_successor(self, person):
+ return person in self._children

Светлана обнови решението на 31.03.2013 10:39 (преди около 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._children = []
self.father = father
self.mother = mother
if father:
father._children += [self]
if mother:
mother._children += [self]
def get_brothers(self):
- brothers = []
- if self.father:
- brothers += filter(lambda x: x.gender == "M",
- self.father._children)
- if self.mother:
- brothers += filter(lambda x: x.gender == "M",
- self.mother._children)
- return sorted(set(brothers) - {self})
+ return self.get_siblings("M")
def get_sisters(self):
- sisters = []
+ return self.get_siblings("F")
+
+ def get_siblings(self, gender):
+ siblings = []
if self.father:
- sisters += filter(lambda x: x.gender == "F", self.father._children)
+ siblings += self.father.children(gender)
if self.mother:
- sisters += filter(lambda x: x.gender == "F", self.mother._children)
- return sorted(set(sisters) - {self})
+ siblings += self.mother.children(gender)
+ return sorted(set(siblings) - {self})
def children(self, gender=None):
if gender:
return list(filter(lambda x: x.gender == gender, self._children))
return self._children
def is_direct_successor(self, person):
return person in self._children