update cours
This commit is contained in:
parent
cd1b19fd4c
commit
8c76a391be
4 changed files with 212 additions and 2 deletions
|
@ -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))
|
||||
|
|
16
algo_avancee/miroir.py
Normal file
16
algo_avancee/miroir.py
Normal file
|
@ -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)
|
103
algo_avancee/piles.html
Normal file
103
algo_avancee/piles.html
Normal file
File diff suppressed because one or more lines are too long
91
algo_avancee/piles.md
Normal file
91
algo_avancee/piles.md
Normal file
|
@ -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)
|
||||
```
|
Loading…
Reference in a new issue