IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Un palindrome ?


Sujet :

Algorithmes et structures de données

  1. #1
    Débutant Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Points : 152
    Points
    152
    Par défaut Un palindrome ?
    Pouvez vous m’aider ?
    Je vais savoir un algorithme qui consiste à vérifier si un mot entré au clavier est un
    “Palindrome”. Un palindrome est une chaîne de caractères réversible (chaîne qui peut se lire
    dans les deux sens ex : elle, ressasser, … ).
    merci :=)
    "L'éducation, c'est le début de la richesse, et la richesse n'est pas destinée à tout le monde"

  2. #2
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    L'algorithme est relativement simple si tu le conçois de manière récursive :

    -> Si tu as aucune ou une seule lettre, c'est un palyndrome.

    -> S'il y a deux lettre et plus, tu regardes si la première et la dernière sont identiques, si c'est le cas, tu rappelle la fonction avec le mot otté des premières et dernières lettres.

    Voici un pseudo code avec une syntaxe proche d'ada.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function palyndrome ( S : String(1..N) ) return boolean is
    begin
         if S.length = 0 or S.length = 1 then
              return true;
         else
              if S(1) = S(n) then
                   return palyndrome( S(2..N-1) );
              else
                   return false;
              end if;
         end if;
    end;

  3. #3
    Rukia
    Invité(e)
    Par défaut
    Bonjour
    Tu peux vérifier s il est palindrome d une autre méthode
    Tu déclare deux compteurs le 1 pour le début et le 2 eme pour la fin (le compteur ^rend la taille de la chaine)
    Tu incrémente le 1 et tu décrémente le 2 et tu test si ch [1]==ch[2]
    L’arrête se feras si le 1compteur dépasse le 2
    Bon courage

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Jao,

    @ PRomu@ld : je ne suis pas d'accord avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         if S.length = 0 or S.length = 1 then
              return true;
    Une chaîne de longueur 0 n'est pas un palindrome.

    @ rukia-san : pas besoin de 2 compteurs : LE compteur va de 0 à longueur/2, et on compare s[compteur] à s[longueur-1-compteur]
    Si les cons volaient, il ferait nuit à midi.

  5. #5
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    C'est pour les besoins de l'algorithme (pour l'appel récursif). Ensuite, ça reste une convention, moi je considère que le mot vide peut se lire dans les deux sens, c'est donc un palindrome. Mais je ne connais pas exactement la définition du palindrome, j'ai pris celle ci parce qu'elle m'arrangeait pour la suite. (les mathématiciens en font de même de temps en temps )

    Mais si tu as une définition différente, la modification dans l'algorithme est sans problème.

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut monty python spirit
    Citation Envoyé par PRomu@ld
    moi je considère que le mot vide peut se lire dans les deux sens
    lol... j'adore !

    au fait, y a combien de lettres imaginaires dans le mot vide ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Pia,

    Les dictionnaires disent, à l'unisson:

    Palindrome : Mot, groupe de mots qui peut être lu indifféremment de gauche à droite ou de droite à gauche en conservant le même sens (ex. ressasser, élu par cette crapule)
    Une chaîne vide n'est pas un mot, ni, a fortiori, un groupe de mots
    Si les cons volaient, il ferait nuit à midi.

  8. #8
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    J'ai dit que ça m'arrangeait d'avoir cette définition, un point c'est tout ! Pour moi l'ensemble vide ou le mot vide (epsilon) est un palyndrome, mais si la définition ne vous plait pas, libre à vous de modifier l'algorithme comme je vous l'ai dit juste avant.

    C'est d'autant plus normal que factorielle de 0 qui vaut 1, que i^2 = -1 ... .

  9. #9
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par PRomu@ld
    JC'est d'autant plus normal que factorielle de 0 qui vaut 1, que i^2 = -1 ... .
    ou que 0 puissance 0 qui vaut heu... rien. Enfin "vide"
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  10. #10
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Jav,
    Citation Envoyé par PRomu@ld
    J'ai dit que ça m'arrangeait d'avoir cette définition, un point c'est tout ! Pour moi l'ensemble vide ou le mot vide (epsilon) est un palyndrome, mais si la définition ne vous plait pas, libre à vous de modifier l'algorithme comme je vous l'ai dit juste avant.
    Pas la peine de s'énerver comme ça

    Citation Envoyé par PRomu@ld
    C'est d'autant plus normal que factorielle de 0 qui vaut 1, que i^2 = -1 ... .
    Pas vraiment, le coup de la factorielle, c'est une convention définie depuis longtemps, et qui a sa raison d'être
    Si les cons volaient, il ferait nuit à midi.

  11. #11
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Pas la peine de s'énerver comme ça
    Je ne m'énerve pas, ne t'inquiète pas. Le problème c'est que je me suis déjà justifié sur cette convention et visiblement personne ne la lu.

    Pas vraiment, le coup de la factorielle, c'est une convention définie depuis longtemps, et qui a sa raison d'être
    Non, c'est un artifice qui arrange bien des choses mais qui n'a pas vraiment de logique. (à part peut-être que 1 est l'élément neutre de la multiplication).

    Je viens de regarder encore un fois, en théorie des langages, le palindrome est définit pour epsilon (le mot vide) ...

  12. #12
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    % On supprime les espaces et autres retours à la ligne de la chaine

    % Si la longueur de la chaine est impaire (ou qu'elle vaut 0), la chaine n'est pas un palindrome

    % Sinon, on test si le premier et le dernier caractère sont égaux. Si oui, on test la meme chose avec les 2 caractères suivants (2eme et avant dernier) et ainsi de suite.

    Il sera tres rapide pour des non palindromes et sera un peu plus long pour les palindromes.

    On peux le faire en récursif mais aussi en itératif.

  13. #13
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Kja,
    Citation Envoyé par Korko Fain
    % On supprime les espaces et autres retours à la ligne de la chaine

    % Si la longueur de la chaine est impaire (ou qu'elle vaut 0), la chaine n'est pas un palindrome

    % Sinon, on test si le premier et le dernier caractère sont égaux. Si oui, on test la meme chose avec les 2 caractères suivants (2eme et avant dernier) et ainsi de suite.

    Il sera tres rapide pour des non palindromes et sera un peu plus long pour les palindromes.

    On peux le faire en récursif mais aussi en itératif.
    Pour 0, on a réglé le problème, mais où as-tu vu qu'un palindrome avait forcément une longueur paire ? Ça vient de sortir ?
    Si les cons volaient, il ferait nuit à midi.

  14. #14
    Rukia
    Invité(e)
    Par défaut
    salut
    le mot "NON" est palindrome de longueur impaire

  15. #15
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Jai,
    Citation Envoyé par rukia-san
    salut
    le mot "NON" est palindrome de longueur impaire
    J'en ai un que je trouve plus approprié, parce que peut-être un peu relié au forum :

    ressasser
    Si les cons volaient, il ferait nuit à midi.

  16. #16
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    Oui effectivement, je n'avais pas penser au fait qu'un palindrome puisse avoir une lettre comme pillier.
    Je cherchais juste une façon d'optimiser mais c'etait nul

  17. #17
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    On s'excite beaucoup sur l'algo de vérification que la lecture est reversible, passant sous silence les difficultés majeures:
    Une chaîne est palindromique ABSTRACTION FAITE de la casse, de la ponctuation, des espaces DES ACCENTS, DES CEDILLES ET AUTRES BIZARRERIES (E dans l'O) DE LA LANGUE FRANCAISE !!!!
    Le gros boulot c'est donc d'épurer la chaîne, de la transformer en une suite de caractères de A à Z et c'est tout.
    C'est d'autant plus tannant que quand on programme en mode console, par exemple sous windows, le codage des bizarreries n'est pas le même que l'ANSI.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

Discussions similaires

  1. Palindrome
    Par zouyou dans le forum C++
    Réponses: 18
    Dernier message: 05/05/2010, 01h28
  2. Palindrome
    Par casafa dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 02/12/2005, 07h33
  3. Tester si un mot est palindrome
    Par imeys dans le forum Langage
    Réponses: 2
    Dernier message: 22/11/2005, 15h03
  4. palindrome
    Par devdébuto dans le forum C
    Réponses: 6
    Dernier message: 17/11/2005, 22h53
  5. [Debutant] Programme de test de palindrome
    Par lala_ dans le forum Assembleur
    Réponses: 5
    Dernier message: 13/02/2005, 15h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo