Votre question

Définir un palyndrome python

Tags :
  • Script
  • Programmation
Dernière réponse : dans Programmation
31 Juillet 2009 14:21:31

bonjour,

Je suis débutant et j'aimerais connaitre la sxolution a cet exercice, svp aidez-moi :

-En partant de l'exercice précédent, écrivez un script qui détermine si une chaîne de
caractères donnée est un palindrome (c'est-à-dire une chaîne qui peut se lire indifféremment
dans les deux sens), comme par exemple « radar » ou « s.o.s ».

merci d'avance.

Autres pages sur : definir palyndrome python

31 Juillet 2009 23:50:13

bonsoir,

Et c'est quoi l'exemple précédent?

Déjà, comparer les longueurs des 2 chaines, si longueur différente,c 'est que les chaines sont différentes... Ca evite une boucle inutile

Personnellement j'aurai tendance à parcourir la chaine 2 fois, croissant puis décroissant en enregistrant le parcours dans 2 chaines temporaires (en fonction de l'ordre du parcours), puis comparer simplement les 2 chaines résultantes....... réinventer donc une valeur absolue de chaine..

ou,

parcourir les 2 chaines sequentiellement, la 1ere en ascendant, la 2nde en descendant et comparer chacun des caractères des 2 chaines en fonction de la chaine parcourue..

C'est des problèmes bateau d'algo!

mais bon,

sans l'exercice précédent, c'est dur!
1 Août 2009 19:32:03

tu vas dans les "Opérations élémentaires sur les chaînes" et l'exercice précédent est le n° 5.9 et donc cet exercice est le n° 5.10 !

désolé d'avoir oublié ce détail !

merci de vos réponses !

pouvait vous me donner le script car j'ai un peu de mal a comprendre !
1 Août 2009 19:57:10

Il faut peut être que tu le cherches non ? pas le but d'un exercice dans le genre ? De plus elendilm à déjà donné l'algo ou presque à implémenter.

Donc je répète.

Tu coupes la chaine en 2 par le milieu.
Tu inverses une des chaines obtenues
Si les 2 chaines sont maintenant identique alors c'est un palindrome.
27 Août 2009 16:20:07

merci de vos explications, mais pouvez-vous me donner au moins le début des chaines à faire car la je vous avoue que je ne sait plus par où commencer ?

merci
27 Août 2009 19:11:58

salut:


1 conseil d'abord:la casse . En info, a!=A !!

Chaine origine (chaine_org): AAttAA

Si chaine_org longueur mod 2 != 0 => meme pas la peine d'aller plus loin .....
Chaine 1: AAt
Chaine 2: tAA
comme dis précédemment, tu inverse une des chaines (peu importe laquelle)

Chaine 2 devient Chaine 3 : AAt

.

Puis tu compare le résultat de l'inversion à la chaine non bidouillée.

Si les chaines (1 et 3) sont identiques, c'est ok , sinon, tu prouve que ce n'est pas un palyndrome.


Sinon,
tu peux aussi faire un compteur de 0 à n/2 (moitié de la chaine complete) et comparer simultanément caractere par caracter


(tjrs modulo 2 avant de commencer :)  ca évite les boucles inutiles.
0 <> dernier
1 <> avant dernier
2 <> avant avant dernier [...]

si tu a la moindre différence jusqu'a arriver à n/2 , tu arrete ta boucle car ce n'est pas un palyndrome, sinon ca en est 1.




Je suis sur qu'on peut trouver d'autres manière plus tordues ....

Cependant, reviens bien dessus pour comprendre, non pas le resultat, mais le raisonnement ... Si tu ne comprends pas ici ... revient vite en arrière!!!
28 Août 2009 16:17:02

merci de ton explication elendilm !

je vais voir ce que je peux faire !
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS