Vérifier un palindrome avec des manipulations de chaine de caractères

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 089 fois - Téléchargée 30 fois

Contenu du snippet

Mot code en gros sert à vérifier si votre chaine de caractères est un palindrome. J'ai réussi à faire mon code de façon à ce que l'on puisse ajouter un point, des majuscules ,les accents et des espaces sans modifier le résultat finale. La seule chose que ça ne vérife pas c'est si le mot existe.

Source / Exemple :


<HTML>
<HEAD>
<TITLE>Palindrome </TITLE>
<SCRIPT language="javascript">
function vérifiéPhrase(phrase)
{
 phrases = new String(phrase) // Initie le string
 phrases = phrases.toLowerCase() // Met tout les caractères en minuscule
 var len = phrases.length;  // Initie le longeur du string ( seulement pour la boucle qui suit )
 //for (i=0;i<len;i++) // Enlève les caractères inutiles et remplace les accents
 caractere_spec = new Array (" ",".",",","!","?","-","_","\\","'","(",")","$","&","%","*")
 lettre_a = new Array("à","â","ä")
 lettre_e = new Array("è","é","ê","ë")
 lettre_i = new Array("ì","î","ï")
 lettre_o = new Array("ò","ô","ö")
 lettre_u = new Array("ù","û","ü")
  for (i=0;i<caractere_spec.length;i++)
  {
   for (x=0;x<len;x++)
   {
   phrases = phrases.replace(caractere_spec[i],"")
   if (phrases.indexOf(caractere_spec[i],0) < 0) break;
   }
  }
  for (i=0;i<lettre_a.length;i++)
  {
   for (x=0;x<len;x++)
   {
   phrases = phrases.replace(lettre_a[i],"a")
   if (phrases.indexOf(lettre_a[i],0) < 0) break;
   }
  }
  for (i=0;i<lettre_e.length;i++)
  {
   for (x=0;x<len;x++)
   {
   phrases = phrases.replace(lettre_e[i],"e")
   if (phrases.indexOf(lettre_e[i],0) < 0) break;
   }
  }
  for (i=0;i<lettre_i.length;i++)
  {
   for (x=0;x<len;x++)
   {
   phrases = phrases.replace(lettre_i[i],"i")
   if (phrases.indexOf(lettre_i[i],0) < 0) break;
   }
  }
  for (i=0;i<lettre_o.length;i++)
  {
   for (x=0;x<len;x++)
   {
   phrases = phrases.replace(lettre_o[i],"o")
   if (phrases.indexOf(lettre_o[i],0) < 0) break;
   }
   for (x=0;x<len;x++)
   {
   phrases = phrases.replace(lettre_u[i],"u")
   if (phrases.indexOf(lettre_u[i],0) < 0) break;
   }
  }
  for (x=0;x<len;x++)
  {
    phrases = phrases.replace("ÿ","y")
    phrases = phrases.replace("ç","c")
   if (phrases.indexOf("ÿ",0) < 0 && phrases.indexOf("ç",0) < 0) break;
  }   
 len = phrases.length; // Initie la bonne valeur de la longeur ,parce que l'on a enlevé les espaces les points, ...
 var num_comparer; 
 var lettre_comparer;
 var résultat = "correct"
 var position = new Array(); // Fait un un table qui contient tous les caractères du mot ou de la phrase
 for (i=0;i<len;i++)
  {
   position[i] = phrases.charAt(i)
  }
 for (i=len;i>0;i--)
  {
   num_comparer = len - i
   lettre_comparer = position[num_comparer]
   if (lettre_comparer != phrases.charAt(i-1)) // Compare chaque caractères à sa lettre symétrique ( de l'autre côté )
    {
      résultat = "mauvais" // Si elle n'est pas égale elle retourne que ce n'est pas un pallindrome
    }
   }
 if (résultat == "correct") // Si à  aucun endroit les lettres n'on pas été égale il affiche que vous avez trouvé un palidrome.
  {
   alert("Vous avez réussi.\nC'était un palyndrome.")
  }
  else //Sinon que vous n'avez pas trouvé un palindrome
   {
    alert("Meilleur chance la prochaine fois.\nCe n'était pas un palyndrome.") 
   }
}
</SCRIPT>
</HEAD>
<BODY>
<FORM  name="form">
Votre phrase : <INPUT type="text" name="phrase" value="La marié ira mal.">
<INPUT type="button" value="Vérifié" onclick="vérifiéPhrase(document.form.phrase.value)">
<INPUT type="hidden" name="temp">
</FORM>
</BODY>
</HTML>

Conclusion :


J'ai essayer d'optimiser le code le plus possible et de la rendre plus souple (pour les espaces et autre). Si vous avez des suggestions n'hésitez à me les envoyer.

A voir également

Ajouter un commentaire

Commentaires

cs_max12
Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014
-
Elu par cette crapule :)
cs_Romain128
Messages postés
89
Date d'inscription
mercredi 9 mars 2005
Statut
Membre
Dernière intervention
7 novembre 2005
-
C'est quoi un palindrome ?
C'est une phrase sans caracteres speciaux?
Sinon c'est simple ton script, simple et bien, sans plus.
coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
29 -
a mon avis, t'as trop utilisé le copier coller...
pour tes remplacements de caractères, une boucle serait plus lisible...
Arto_8000
Messages postés
1051
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
5 -
Bon pour ceux qui ne savent pas ce que c'est un palindrome. En gros, c'est une phrase qui peut se lire de gauche à droite et de droite à gauche sans que la phrase change.

Ex: La marié ira mal
Si on la lit à l'envers on lira quand même la marié ira mal.
cs_tecman
Messages postés
63
Date d'inscription
mercredi 5 mars 2003
Statut
Membre
Dernière intervention
29 juin 2005
-
Autre possibilité : mettre la phrase traitée (retrait accent, ...) dans un tableau et utiliser la fonction reverse().

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.