diff --git a/algo_avancee/files.md b/algo_avancee/files.md index 8124efb..4653ffc 100644 --- a/algo_avancee/files.md +++ b/algo_avancee/files.md @@ -141,10 +141,10 @@ def tri_pairs(f): debut = debut_file(f) if debut % 2 == 0: ajouter_fin_file(f_pairs, debut) - retirer_debut_file(f) else: ajouter_fin_file(f,_impairs debut) - retirer_debut_file(f) + + retirer_debut_file(f) while !file_vide(f_impairs): ajouter_fin_file(f_pairs, debut_file(f_impairs)) diff --git a/algo_avancee/miroir.py b/algo_avancee/miroir.py new file mode 100644 index 0000000..aed4008 --- /dev/null +++ b/algo_avancee/miroir.py @@ -0,0 +1,16 @@ +def miroir(): + pile = creer_pile() + car = input("Saisir un caractère : ") + while car <= 'z' and car >= 'a' or car <= 'Z' and car >= 'A': + empile(pile, car) + car = input("Saisir un caractère ") + + while not pile_vide(pile): + print(sommet(pile), end="") + depile(pile) + print() + +def separate_car(): + chaine = input("Saisir une chaine : ") + for car in chaine: + print(car) \ No newline at end of file diff --git a/algo_avancee/piles.html b/algo_avancee/piles.html new file mode 100644 index 0000000..8541151 --- /dev/null +++ b/algo_avancee/piles.html @@ -0,0 +1,103 @@ + + + + + piles.html + + + + + + +

Algo avancée - Listes

+

Problématique

Les tableaux et les listes sont des structures basiques et ne permettent pas la résolution de certains problèmes.

Les piles

Les piles sont comme une pile d’assiettes.
On dispose de fonctions permettant les opérations sur les piles :

p = creer_pile()
+empiler(p, e)
+depiler(p)
+elt = sommet(p)
+vide = pile_vide(p)
+pleine = pile_pleine(p)
+

On peut modéliser les piles de différentes manières

Modélisation liste

On peut voir les piles comme des listes :
La tête s’appelle maintenant sommet, on empile en ajoutant un élément avant la tête, on dépile en enlevant le sommet et en le déplaçant.
La pile ici ne sera jamais pleine.

def creer_pile():
+    p = Pile(sommet=None)
+    return p
+
+
+def pile_vide(p):
+    return p.sommet == None
+
+
+def empile(p, e):
+    ptr = new_maillon()
+    ptr.suivant = p.sommet
+    ptr.valeur = e
+    p.sommet = ptr
+

Modélisation tableau

Renvoi au cours d’algo.

Problèmes

Bien parenthésé ?

On cherche à déterminer si une expression est bien parenthésée ou non. On va utiliser les piles pour résoudre ce problème :

def check_parentheses(expression):
+    pile = creer_pile()
+    for car in expression:
+        if car == '(' or car == '[':
+            empile(pile, car)
+        elif car == ')':
+              if pile_vide(pile) or sommet(pile) != '(':
+                 return False
+            depile(pile)
+        elif car == ']':
+              if pile_vide(pile) or sommet(pile) != '[]':
+                 return False
+            depile(pile)
+        i += 1
+    return pile_vide(pile)
+
+ + + + diff --git a/algo_avancee/piles.md b/algo_avancee/piles.md new file mode 100644 index 0000000..c899bdd --- /dev/null +++ b/algo_avancee/piles.md @@ -0,0 +1,91 @@ +# Algo avancée - Listes + +[TOC] + +## Problématique +Les tableaux et les listes sont des structures basiques et ne permettent pas la résolution de certains problèmes. + +## Les piles +Les piles sont comme une pile d'assiettes. +On dispose de fonctions permettant les opérations sur les piles : + +```python +p = creer_pile() +empiler(p, e) +depiler(p) +elt = sommet(p) +vide = pile_vide(p) +pleine = pile_pleine(p) +``` + +On peut modéliser les piles de différentes manières + +### Modélisation liste +On peut voir les piles comme des listes : +La tête s'appelle maintenant sommet, on empile en ajoutant un élément avant la tête, on dépile en enlevant le sommet et en le déplaçant. +La pile ici ne sera jamais pleine. + +```python +def creer_pile(): + p = Pile(sommet=None) + return p + + +def pile_vide(p): + return p.sommet == None + + +def empile(p, e): + ptr = new_maillon() + ptr.suivant = p.sommet + ptr.valeur = e + p.sommet = ptr +``` + +### Modélisation tableau +Renvoi au cours d'algo. + +## Problèmes +### Bien parenthésé ? +On cherche à déterminer si une expression est bien parenthésée ou non. On va utiliser les piles pour résoudre ce problème : + +```python +def check_parentheses(expression): + pile = creer_pile() + for car in expression: + if car == '(' or car == '[': + empile(pile, car) + elif car == ')': + if pile_vide(pile) or sommet(pile) != '(': + return False + depile(pile) + elif car == ']': + if pile_vide(pile) or sommet(pile) != '[]': + return False + depile(pile) + i += 1 + return pile_vide(pile) +``` + +### Fonction miroir +```python +def miroir(): + pile = creer_pile() + car = input("Saisir un caractère ") + while car <= 'z' and car >= 'a' or car <= 'Z' and car >= 'A': + empile(pile, car) + car = input("Saisir un caractère ") + + while not pile_vide(pile): + print(sommet(pile), end="") + depile(pile) + print() +``` + +### Fonction qui sert à rien +```python +def separate_car(): + chaine = input("Saisir une chaine : ") + for car in chaine: + print(car) +``` \ No newline at end of file