1.
def
filhos(dicio,progenitor):
2.
""" lista dos filhos."""
3.
return
dicio.get(progenitor,[])
01.
def
netos(dicio,progenitor):
02.
""" Lista netos. Filhos dos filhos"""
03.
desc1
=
filhos(dicio,progenitor)
04.
if
desc1:
05.
net
=
[]
06.
for
elem
in
desc1:
07.
desc2
=
filhos(dicio,elem)
08.
if
desc2:
09.
net
=
net
+
desc2
10.
return
net
11.
else
:
12.
return
[]
1.
def
netos_b(arv_genea,progenitor):
2.
net
=
[]
3.
desc1
=
filhos(arv_genea,progenitor)
4.
for
prog
in
desc1:
5.
net.extend(filhos(arv_genea,prog))
6.
return
net
01.
def
netos_b(dicio ,progenitor):
02.
""" Lista dos netos. Os filhos dos filhos"""
03.
return
filhos_b(dicio,filhos_b(dicio,[progenitor]))
04.
05.
def
filhos_b(dicio,lista_progenitores):
06.
lista_filhos
=
[]
07.
for
filho
in
lista_progenitores:
08.
lista_filhos.extend(dicio.get(filho,[]))
09.
return
lista_filhos
Agora o conceito básico de progenitor de alguém:
1.
def
progenitor(ag,nome):
2.
for
p,fil
in
ag.items():
3.
if
nome
in
fil:
4.
return
p
5.
return
None
1.
def
irmaos(ag,nome1,nome2):
2.
""" Têm o mesmo progenitor?"""
3.
prog1
=
progenitor(ag, nome1)
4.
prog2
=
progenitor (ag,nome2)
5.
return
prog1
=
=
prog2
1.
def
avo(dic,nome):
2.
""" Quem é o avô/avó do nome."""
3.
prog
=
progenitor(dic,nome)
4.
if
prog:
5.
return
progenitor(dic,prog)
6.
return
None
Finalmente, pense numa implementação mais realista de uma árvore genealógica, em que cada pessoa tem associado os seus pais. E faça tudo de novo!!!
Sem comentários:
Enviar um comentário