Sujet : Re: Les raisons de ma question de ce jour : panne de mémoire avec list et str
De : om+news (at) *nospam* miakinen.net (Olivier Miakinen)
Groupes : fr.comp.lang.pythonDate : 02. Dec 2024, 22:48:30
Autres entêtes
Organisation : There's no cabale
Message-ID : <vil9ve$lkc$1@cabale.usenet-fr.net>
References : 1
User-Agent : Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 SeaMonkey/2.49.4
Le 02/12/2024 17:55, Dominique a écrit :
[...] Je vais essayer d'améliorer mon script en évitant de
tricher :)
Avant de te lancer dans le problème complet, commence par faire *une*
étape de deux retournements, en partant d'un exemple que tu maîtrises.
***
Par exemple, si tu pars de :
crepe = [1, 2, 7, 8, 3, 4, 5, 6, 9, 10]
***
Ton programme doit :
a) déterminer que sur les dix crêpes, huit ne sont pas encore triées, puisque
la 9 et la 10 sont déjà à leur place.
N_non_triees = 8
b) déterminer que la plus grande crêpe non triée est la 8, à la 4e position.
N_a_retourner = 4
c) retourner les N_a_retourner premières crêpes, pour donner :
crepe = [8, 7, 2, 1, 3, 4, 5, 6, 9, 10]
d) retourner les N_non_triees premières crêpes, pour donner :
crepe = [6, 5, 4, 3, 1, 2, 7, 8, 9, 10]
***
Et donc là, ton programme calculera en (a) et (b) :
N_non_triees = 6
N_a_retourner = 1
Il devrait se rendre compte que l'étape (c) est inutile (on ne retourne pas
une crêpe toute seule), et donnera à l'étape (d) :
crepe = [2, 1, 3, 4, 5, 6, 7, 8, 9, 10]
***
De là, il sautera encore l'étape (c) ayant calculé que N_a_retourner vaut 1,
et il retournera en (d) les deux crêpes 2 et 1 pour le résultat final.
***
Comme tu le vois, tu auras besoin d'une fonction qui retourne les N premiers
éléments d'une liste de taille généralement supérieure à N.
-- Olivier Miakinen