first commit

This commit is contained in:
2024-11-23 13:38:17 +01:00
parent 678203b19f
commit fb915042df
99 changed files with 6624 additions and 0 deletions

260
file/LSC.py Normal file
View File

@@ -0,0 +1,260 @@
"""
Librairie des Listes Simplement Chaînées.
Elle met à distribution cette structure de données et son interface.
@author: L. JOANNIC
"""
# ############################################################################
class Liste_Simplement_Chainee(object):
"""
Classe des Listes Simplement Chainees.
Attributs
- _tete : None si vide, Maillon sinon.
Méthodes
- est_vide
- ajouter_en_tete
- tete
- queue
"""
def __init__(self):
"""
Construire une instance de Liste Simplement Chainee.
Returns
-------
None.
"""
self._tete = None
return None
def est_vide(self):
"""
Tester si l'instance est vide.
Returns
-------
bool
Vrai ssi la liste est vide.
"""
return (self._tete is None)
def ajouter_en_tete(self, element):
"""
Ajouter l'élément en tête de liste.
Parameters
----------
element : type de donnee
Donnnée à ajouter à la liste.
Returns
-------
resultat : Liste_Simplement_Chainee
La liste à abonder.
"""
resultat = Liste_Simplement_Chainee()
resultat._tete = Maillon(element, self)
return resultat
def tete(self):
"""
Renvoyer la donnée stockée en tête de liste.
Returns
-------
type de donnee quelconque
donnee en tete.
"""
assert not(self.est_vide()), "Liste Vide"
return self._tete.donnee
def queue(self):
"""
Renvoyer la sous-liste suivant le maillon de tete.
Returns
-------
Liste_Simplement_Chainee
Queue de la liste.
"""
assert not(self.est_vide()), "Liste Vide"
return self._tete.suite
# ############################################################################
def creer_liste_vide():
"""
Créer une liste simplement chainee vide.
Returns
-------
Liste_Simplement_Chainee
Liste vide.
Effets de bord
--------------
Aucun
"""
return Liste_Simplement_Chainee()
def est_vide(liste):
"""
Tester si la liste simplement chainee est vide.
Parameters
----------
liste : Liste Simplement Chainee
Liste à tester.
Returns
-------
bool
Vrai ssi la liste est vide.
Effets de bord
--------------
Aucun
"""
return liste.est_vide()
def ajouter_en_tete(liste, element):
"""
Inserer un element en tete de liste simplemeent chainee.
Parameters
----------
liste : LSC
Liste à abonder.
element : type de donnee
Donnee à aouter.
Returns
-------
LSC, copie de liste à laquelle element a été ajouté en tete.
Effets de bord
--------------
Aucun
"""
return liste.ajouter_en_tete(element)
def tete(liste):
"""
Consulter la tete de liste.
Parameters
----------
liste : LSC
Liste à consulter.
Returns
-------
type de donnée
valeur de la tete de liste.
Effets de bord
--------------
Aucun
"""
return liste.tete()
def queue(liste):
"""
Renvoyer la liste sans sa tete.
Parameters
----------
liste : LSC
Liste à étêter.
Returns
-------
LSC
Liste sans son maillon de tête.
Effets de bord
--------------
Aucun
"""
return liste.queue()
def afficher_liste(liste, taille=-1):
"""
Afficher la liste en format de présentation.
Parameters
----------
liste : LSC
Liste à énumérer.
Returns
-------
None.
Effets de bord
--------------
Affichage à l'écran.
"""
reste = liste
compteur = 0
print('+-----\n|')
while not(est_vide(reste)) and (taille == -1 or compteur < taille):
print('+- {}\n|'.format(str(tete(reste))))
reste = queue(reste)
compteur += 1
print('+-----')
return None
# ############################################################################
class Maillon(object):
"""
Classe des Maillons d'une Liste Simplement Chainee.
Attributs
- donnee : donnee stockee dans le maillon
- suite : liste simplemement chainee suivant le maillon
"""
def __init__(self, donnee=None, suite=Liste_Simplement_Chainee()):
"""
Construire une instance de la classe des Maillons.
Parameters
----------
donnee : type de donnee, optional
Donnee initiale dans le Maillon. The default is None.
suite : LSC, optional
Sous-liste suivant le Maillon courant.
The default is Liste_Simplement_Chainee().
Returns
-------
None.
"""
self.donnee = donnee
self.suite = suite
return None
# ############################################################################

58
file/file.py Normal file
View File

@@ -0,0 +1,58 @@
def creer_file_vide():
"""
Crée une nouvelle file vide.
Returns:
list: Une liste vide représentant la file.
"""
return []
def est_vide(file):
"""
Vérifie si une file est vide.
Args:
file (list): La file à vérifier.
Returns:
bool: `True` si la file est vide, `False` sinon.
"""
return len(file) == 0
def enfiler(file, elt):
"""
Ajoute un élément à la fin de la file.
Args:
file (list): La file à laquelle ajouter l'élément.
elt: L'élément à ajouter.
Returns:
None
"""
return file.append(elt)
def defiler(file: list):
"""
Retire et renvoie le premier élément de la file.
Args:
file (list): La file dont l'élément de tête doit être retiré.
Returns:
list: La file sans le premier élément.
"""
return file[1:]
def peak(file: list):
"""
Renvoie l'élément en tête de la file sans le retirer.
Args:
file (list): La file dont on veut consulter le premier élément.
Returns:
L'élément en tête de la file.
"""
return file[0]

4
file/file_LSC.py Normal file
View File

@@ -0,0 +1,4 @@
import LSC as lifo
def creer_liste_vide():
return lifo.cr

23
file/file_tuple.py Normal file
View File

@@ -0,0 +1,23 @@
def creer_file_vide():
return ()
def est_vide(file: tuple)-> bool:
return () == file
def tete(file: tuple):
assert not(est_vide(file)), "file vide"
element, reste = file
return element
def queue(file):
element,reste = liste
return reste
def inserer_tete(file,elt):
return (elt,file)
def inserer_queue(file,elt):
if est_vide(file):
return inserer_tete(file,elt)
return inserer_tete(inserer_queu(queue(file),elt)tete(file))