Sujet : [SOLUTION] Tri de crêpes
De : om+news (at) *nospam* miakinen.net (Olivier Miakinen)
Groupes : fr.comp.lang.pythonDate : 03. Dec 2024, 15:08:38
Autres entêtes
Organisation : There's no cabale
Message-ID : <vin3d6$1mos$1@cabale.usenet-fr.net>
References : 1 2
User-Agent : Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 SeaMonkey/2.49.4
Solution du problème, ne pas lire tant que tu veux encore chercher.
En revanche, toute proposition d'amélioration est la bienvenue.
Le 03/12/2024 12:41, Olivier Miakinen a écrit :
https://fr.wikipedia.org/wiki/Tri_de_cr%C3%AApes
=============================================================================
#!/usr/bin/python3
import random
nb = int(input('Nombre de crêpes : '))
crepes = list(range(0, nb)) # crepes = [0, 1, ..., nb-1]
random.shuffle(crepes) # là elles sont probablement dans le désordre
desordre = nb # nombre de crêpes non triées
# Boucle infinie, mais dont on sortira par exit(0) quand tout sera trié.
while True:
# Les dernières crêpes sont dans l'ordre si crepes[i] == i
while desordre > 0 and crepes[desordre - 1] == desordre - 1:
desordre = desordre - 1
print("Les crêpes sont dans l'ordre suivant :", crepes,
f"({nb - desordre} ok)")
###################################################################
# Le seul point de sortie du programme est ici
###################################################################
if desordre == 0:
print("Les crêpes sont bien ordonnées.")
exit(0)
###################################################################
# On va chercher la plus grande crêpe parmi celles qui ne sont
# pas encore triées
maxcrepe = max(crepes[:desordre])
maxindex = crepes.index(maxcrepe)
if maxindex == 0:
# La plus grande des crêpes non triées est en haut de la pile,
# on va renverser l'ensemble des crêpes non triées pour la
# mettre en bas.
retourner = desordre
else:
# Le plus grande des crêpes non triées n'est pas en haut de la
# pile, on va retourner suffisamment de crêpes pour l'y mettre.
retourner = maxindex + 1
print(f"On retourne {retourner} crêpes.")
crepes[:retourner] = crepes[:retourner][::-1]
# Cette ligne du programme n'est jamais atteinte
=============================================================================
-- Olivier Miakinen