Files
cours/trees/genealogie/genealogie.py
2025-03-16 18:57:42 +01:00

126 lines
3.6 KiB
Python

Genealogie = [
["Henri IV", 1553, 1610, "1589-1610", [1]],
["Louis XIII", 1601, 1643, "1610-1643", [2, 3]],
["Louis XIV", 1638, 1715, "1643-1715", [4]],
["Philippe Ier, duc d'Orleans", 1640, 1701, "", [15]],
["Louis le Grand Dauphin", 1661, 1711, "", [5, 6]],
["Louis, duc de Bourgogne", 1682, 1712, "", [7]],
["Philippe V, roi d'Espagne", 1683, 1746, "", []],
["Louis XV", 1710, 1774, "1715-1774", [8]],
["Louis, Dauphin", 1729, 1765, "", [9, 10, 11]],
["Louis XVI", 1754, 1793, "1754-1793", [13]],
["Louis XVIII", 1755, 1824, "1815-1824", []],
["Charles X", 1756, 1832, "1824-1830", []],
['Louis-Philippe-Joseph "Philippe Egalite"', 1747, 1793, "", [14]],
["Louis XVII", 1785, 1795, "", []],
["Louis-Philippe Ier, roi des Français", 1773, 1850, "", []],
["Philippe II", 1674, 1723, "", [16]],
["Louis, duc d'Orleans", 1703, 1752, "", [17]],
["Louis-Philippe Ier, duc d'Orleans", 1725, 1785, "", [12]],
]
def creer_arbre():
return ()
def est_vide(arbre):
return arbre == () or arbre is None
def rechercher(arbre, valeur):
if not (est_vide(arbre)):
racine, enfants = arbre
if racine == valeur:
return arbre
resultat = creer_arbre()
for ss_arbre in enfants:
resultat = rechercher(ss_arbre, valeur)
if not (est_vide(resultat)):
break
return resultat
return arbre
def ajouter_enfant(arbre, enfant, cle_parent):
if est_vide(arbre):
return enfant
return arbre.insert(cle_parent + 1, enfant)
Bourbons = [
["Nom", "naissance", "mort", "règne"],
["Henri IV", 1553, 1610, "1589-1610"],
["Louis XIII", 1601, 1643, "1610-1643"],
["Louis XIV", 1638, 1715, "1643-1715"],
["Philippe, duc d'Orleans", 1640, 1701, ""],
["Louis le Grand Dauphin", 1661, 1711, ""],
["Louis, duc de Bourgogne", 1682, 1712, ""],
["Philippe V, roi d'Espagne", 1683, 1746],
["Louis XV", 1710, 1774, "1715-1774"],
["Louis, Dauphin", 1729, 1765, ""],
["Louis XVI", 1754, 1793, "1765-1792"],
["Louis XVIII", 1755, 1824, "1814-1824"],
["Charles X", 1756, 1832, "1824-1830"],
['Louis-Philippe-Joseph "Philippe Egalite"', 1747, 1793, ""],
["Louis XVII", 1785, 1795, ""],
["Louis Philippe Ier", 1773, 1850, "1830-1848"],
]
Genealogie = (
1,
[
(
2,
[
(
3,
[
(
5,
[
(6, [(8, [(9, [(10, [14]), (11, []), (12, [])])])]),
(7, []),
],
)
],
),
(4, []),
],
)
],
)
print("ENUMERATION :")
for rg, bourbon in enumerate(Bourbons):
print(rg, bourbon[0])
print()
print("RECHERCHE :")
print(rechercher(Genealogie, 8))
class Arbre(object):
def __init__(self, racine=None, ss_arbres=[]) -> None:
self.racine = racine
self.ss_arbres = ss_arbres
def est_vide(self):
return self.racine == None
def rechercher(self, valeur):
if not (self.est_vide()):
if self.racine == valeur:
return self
resultat = Arbre()
for ss_arbre in self.ss_arbres:
ss_arbre = Arbre(racine=None, ss_arbres=ss_arbre)
resultat = ss_arbre.rechercher(valeur)
if not (resultat == None):
break
return resultat
def ajouter(self,elt):
if self.est_vide():
return Arbre(racine=elt)
else: