2) En attendant que tout le monde soit près pour les explications du prof sur le 3)
les plus rapides peuvent déjà s'attaquer à la fonction palindrome qui prend en argument un
mot (en clair une chaîne de caractères) et qui renvoie True si le mot est identique à lui même
lorsqu'on le lit de droite à gauche (c'est-à-dire lorsqu'on renverse son écriture) et False sinon.
Par exemple ''été'' et ''kayak'' sont des palindromes, tandis que ''palindrome'' n'est pas
un palindrome puisque lu à l'envers cela donne ''emordnilap'' . Les littéraires considèrent que,
comme pour la résolution de mots croisés, on ne doit pas tenir compte des accents ni de la
ponctuation ni des blancs. Vous ignorerez cette contrainte qui obligerait à tester certaines lettres
particulières : celles qui peuvent porter un accent et à ne pas tenir compte des blancs.
La clé pour trouver l'algorithme passe par voir ce que l'on fait lorsque le mot est tellement
long qu'il serait fastidieux de l'écrire à l'envers : vous trouvez en pratique très rapidement s'il n'est
pas un palindrome. Voir les exemples sur la feuille ''recursion2 '' .
Vous l'écrirez à l'aide d'une fonction récursive
et s'il vous reste du temps,
vous essayez d'écrire une autre fonction qui le réalise à l'aide d'une boucle effectuant bien
évidemment le minimum de calcul. Vous devriez conclure que la récursion demande souvent moins
d'efforts.
Pour la récursion, il suffit de savoir que pour une chaîne de caractères string l'expression
string[ debut : fin ] extrait du mot les premières lettres en ne commençant qu'à celle d'indice
debut et en s'arrêtant juste avant la lettre d'indice fin .
2) Fusion de deux listes triées ( pour préparer les cours suivants en classe )
Les explications du professeur illustrent une fois de plus l'intérêt qu'il y a à commencer à
réfléchir au brouillon : inutile d'écrire du code python si on n'a pas d'idée claire sur ce qui se passe
et ce qu'il faut faire dans les mémoires.
On considère deux suites ordonnées, par exemple
L1= [ 3,5,7,11 ,13 ,17 ,19 ,23 ,29 ,31 ]
L= [ 2,3,4,5,7,8,11 ,13 ,16 ,17 ,19 ,23 ,29 ,31 ,32 ]
pour
l'exemple numérique proposé
Proposer une fonction fusion non récursive : à l'aide de tests if else , de boucle(s) qui
réalise cette opération.
( presque FIN )
Vous avez tout fait ? C'est très encourageant pour les concours et pour ne pas vous
ennuyer, je vous propose de revenir sur le 2) si vous ne l'avez pas finalisé ou bien de continuer
les parties que vous n'aviez pas abordées lors du TP précédent.