Le 03/12/2024 18:07, Dominique a écrit :
Le 03/12/2024 à 15:08, Olivier Miakinen a écrit :
Promis, je ne lis pas ta solution :)
Merci de l'avoir donnée.
De rien. Note quand même que tu t'étais énormément compliqué la vie en
passant par un unique nombre, transformé en chaîne de caractères, puis
découpé en caractères de '0' à '9' ; utiliser directement un tableau de
nombres de 0 à N-1 (ou de 1 à N, voir plus loin) est beaucoup plus
simple.
Et, oui, pour nous autres humains, utiliser les nombres de 1 à N est
quand même plus naturel que les nombres de 0 à N-1. Pour cela, il suffit
d'appliquer à mon programme précédent les modifs suivantes :
======================================================================
$ diff crepier.py crepier1.py
7c7
< crepes = list(range(0, nb)) # crepes = [0, 1, ..., nb-1]
---
crepes = list(range(1, nb+1)) # crepes = [1, 2, ..., nb]
14,15c14,15
< # Les dernières crêpes sont dans l'ordre si crepes[i] == i
< while desordre > 0 and crepes[desordre - 1] == desordre - 1:
---
# Les dernières crêpes sont dans l'ordre si crepes[i] == i+1
while desordre > 0 and crepes[desordre - 1] == desordre:
======================================================================
Et voici deux exemples de lancement du programme modifié :
======================================================================
$ ./crepier1.py
Nombre de crêpes : 6
Les crêpes sont dans l'ordre suivant : [1, 5, 3, 2, 6, 4] (0 ok)
On retourne 5 crêpes.
Les crêpes sont dans l'ordre suivant : [6, 2, 3, 5, 1, 4] (0 ok)
On retourne 6 crêpes.
Les crêpes sont dans l'ordre suivant : [4, 1, 5, 3, 2, 6] (1 ok)
On retourne 3 crêpes.
Les crêpes sont dans l'ordre suivant : [5, 1, 4, 3, 2, 6] (1 ok)
On retourne 5 crêpes.
Les crêpes sont dans l'ordre suivant : [2, 3, 4, 1, 5, 6] (2 ok)
On retourne 3 crêpes.
Les crêpes sont dans l'ordre suivant : [4, 3, 2, 1, 5, 6] (2 ok)
On retourne 4 crêpes.
Les crêpes sont dans l'ordre suivant : [1, 2, 3, 4, 5, 6] (6 ok)
Les crêpes sont bien ordonnées.
======================================================================
$ ./crepier1.py
Nombre de crêpes : 10
Les crêpes sont dans l'ordre suivant : [3, 10, 8, 9, 2, 5, 4, 6, 7, 1] (0 ok)
On retourne 2 crêpes.
Les crêpes sont dans l'ordre suivant : [10, 3, 8, 9, 2, 5, 4, 6, 7, 1] (0 ok)
On retourne 10 crêpes.
Les crêpes sont dans l'ordre suivant : [1, 7, 6, 4, 5, 2, 9, 8, 3, 10] (1 ok)
On retourne 7 crêpes.
Les crêpes sont dans l'ordre suivant : [9, 2, 5, 4, 6, 7, 1, 8, 3, 10] (1 ok)
On retourne 9 crêpes.
Les crêpes sont dans l'ordre suivant : [3, 8, 1, 7, 6, 4, 5, 2, 9, 10] (2 ok)
On retourne 2 crêpes.
Les crêpes sont dans l'ordre suivant : [8, 3, 1, 7, 6, 4, 5, 2, 9, 10] (2 ok)
On retourne 8 crêpes.
Les crêpes sont dans l'ordre suivant : [2, 5, 4, 6, 7, 1, 3, 8, 9, 10] (3 ok)
On retourne 5 crêpes.
Les crêpes sont dans l'ordre suivant : [7, 6, 4, 5, 2, 1, 3, 8, 9, 10] (3 ok)
On retourne 7 crêpes.
Les crêpes sont dans l'ordre suivant : [3, 1, 2, 5, 4, 6, 7, 8, 9, 10] (5 ok)
On retourne 4 crêpes.
Les crêpes sont dans l'ordre suivant : [5, 2, 1, 3, 4, 6, 7, 8, 9, 10] (5 ok)
On retourne 5 crêpes.
Les crêpes sont dans l'ordre suivant : [4, 3, 1, 2, 5, 6, 7, 8, 9, 10] (6 ok)
On retourne 4 crêpes.
Les crêpes sont dans l'ordre suivant : [2, 1, 3, 4, 5, 6, 7, 8, 9, 10] (8 ok)
On retourne 2 crêpes.
Les crêpes sont dans l'ordre suivant : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] (10 ok)
Les crêpes sont bien ordonnées.
======================================================================
-- Olivier Miakinen