Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

ANAGRAMME D'UN MOT


Information sur la source

Catégorie :.NET Source .NET ( DotNet ) Classé sous : anagramme, mot, anagrammeur, permutation, permuter Niveau : Débutant Date de création : 21/11/2003 Date de mise à jour : 21/11/2003 14:06:48 Vu : 27 068

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

Description

Ce programme d'anagramme utilise des permutations circulaires : on effectue N permutations circulaires d'un mot de N lettres, puis, pour chaque permutation, on effectue les permutations circulaires des (N-1) premières (on aurait aussi pu prendre les N-1 dernières) lettres et ainsi de suite...

 

Source

  • // Recherche de tous les anagrammes d'un mot <Str> (Point d'entrée)
  • public void Anagramme(string Str)
  • {
  • Anagramme(ref Str,Str.Length);
  • }
  • // Methode récursive de calcul des permutations circulaires d'un mot
  • public void Anagramme(ref string Str, int Lg)
  • {
  • if (Lg==1)
  • Console.WriteLine(Str);
  • else
  • {
  • string strTmp=Str;
  • // Pour chaque permutation circulaire des Lg premières lettres : appel récursif
  • // avec les Lg-1 premières lettres
  • for (int i=0;i<Lg;i++)
  • {
  • strTmp=strTmp.Substring(1,Lg-1) + strTmp[0] + strTmp.Substring(Lg);
  • Anagramme(ref strTmp ,Lg-1);
  • }
  • }
  • }
// Recherche de tous les anagrammes d'un mot <Str> (Point d'entrée)
public void Anagramme(string Str)
{
    Anagramme(ref Str,Str.Length);
}

// Methode récursive de calcul des permutations circulaires d'un mot
public void Anagramme(ref string Str, int Lg)
{
  if (Lg==1)
      Console.WriteLine(Str);
  else
  {
      string strTmp=Str;
      // Pour chaque permutation circulaire des Lg premières lettres : appel récursif
      //   avec les Lg-1 premières lettres
      for (int i=0;i<Lg;i++)
      {
          strTmp=strTmp.Substring(1,Lg-1) + strTmp[0] + strTmp.Substring(Lg);
          Anagramme(ref strTmp ,Lg-1);
      }
  }
}

Commentaires et avis

signaler à un administrateur
Commentaire de gg00xiv le 21/11/2003 16:49:51

Plus simple :

char[] chars = taString.ToCharArray();
char[] reverseChars = Array.Reverse(chars);
string anagramme = new String(reverseChars);

ca vaut toujours la peine de s'informer sur la documentation gratuite du framework :)

signaler à un administrateur
Commentaire de gg00xiv le 21/11/2003 16:51:18

Je corrige :

string taString = "Manifestation";
char[] chars = taString.ToCharArray();
Array.Reverse(chars);

Console.WriteLine(new string(chars));

signaler à un administrateur
Commentaire de furybond le 21/11/2003 22:01:41

Array.Reverse     inverse le tableau de &lt;char&gt;, mais ne calcule pas  tous les anagrammes du tableau.

anagrammes d'un mot != inverse d'un mot

Tu ferais bien de réviser ton framework 'gratuit' avant de venir critiquer, ou d'en acheter un à ta porté (puis-je te suggérer 'framework pour les nuls' ?)

signaler à un administrateur
Commentaire de gg00xiv le 21/11/2003 22:11:37

Certes, mais trouver toutes les combinaisons possible de lettres a partir de celles presentes dans un mot ne constitue en rien des anagrammes.

Definition d'un anagramme : Transposition des lettres d'un mot ou d'une phrase donnant un autre mot ou phrase (ref Guillet Flamarion)

Donc toi révise ton francais :P

signaler à un administrateur
Commentaire de furybond le 22/11/2003 00:34:39

Tout "mot" obtenu par le mélange des lettres d'un mot est, par définition, un anagramme de ce mot.

Rien ne précise que le mot doit avoir une signification, ni dans cette définition, ni dans la tienne.

Donc trouver tous les anagrammes d'un mot revient à chercher toutes les combinaisons des lettres de ce mot.

Et tant bien même, l'algorithme était donné à titre indicatif, car ceux présents en vb.net ou autres langages sur ce site, sont beaucoup plus longs.

Il est clair pour tout le monde (sauf toi), qu'en quelques lignes, on ne peux prétendre donner des mots du dictionnaire... :) j'en ris encore

Un programme d'anagramme comme celui-ci peut servir à combiner autre chose que des lettres pour former des mots. Mais cela doit être trop subtil pour toi.

A part cela, mon français va bien merci.

Quand tu t'achéteras 'framework pour les nuls' profites-en pour prendre aussi 'réfléchir pour les nuls'. Ils font peut-être des prix de gros... nul.

signaler à un administrateur
Commentaire de gg00xiv le 22/11/2003 00:50:56

J'insiste encore sur un point de francais pour corriger ton raisonnement quelque peut déplacé à mon égard:

Un mot (je ne citerai pas encore une définition du dictionnaire que je chérie tant) représente une idée.

Libre à toi d'en faire ta propre définition.

"Le francais pour les nulls", ca tinteresse ? (Gilbert Jeune)

signaler à un administrateur
Commentaire de furybond le 22/11/2003 01:41:56

Quand on confond 'palindrome' et 'anagramme' on n'a de conseil à donner à personne.

De plus, on trouve plusieurs définition d'un 'mot' : cela peut aussi être  "un ensemble de caractères séparés par deux blancs".

Il y a 4 fautes dans ta dernières phrases. Je comprends pourquoi tu chérie tant ton dictionnaire. Tu ferais bien de l'ouvrir plus souvent.


signaler à un administrateur
Commentaire de gg00xiv le 22/11/2003 08:50:16

Persévere frère, un jour tu sera reconnu par ton dévouement pour la communauté.

Sur ce, je me retourne à des occupations plus interessantes qu'un débat foireux animé par un révolté.

signaler à un administrateur
Commentaire de EricMarchesin le 25/11/2003 10:59:17

Voilà ce que je n'aime pas dans les forum de discussion français : c'est l'impolitesse, l'absence de modestie et de respect envers les autres. C'est réellement navrant et indigne. Je suis fervent défenseur des sites de développement en français mais force est de constater que dans les forums américains (cf codeproject) les gens sont plus courtois et professionnels.
Je vous rappelle que le but d'un tel site est le partage et l'entraide dans une ambiance sympathique, et non de faire office de ring pour savoir qui sait mieux faire telle chose qu'un autre. Donc s'il vous plaît, soyez adultes et moins agressifs.

Pour info, un palindrome est un mot qui se lit de la même façon de gauche à droite et de droite à gauche (le reverse n'a aucun effet). Un anagramme est un mot formé des mêmes lettres et qui a un sens. C'est donc un sous-ensemble de l'ensemble des combinaisons de lettres. gg00xiv a raison et suggérait simplement de chercher l'ensemble des combinaisons en travaillant sur un tableau et non sur une chaîne.

La modestie est la première des qualités, avec le respect d'autrui.
Eric.

signaler à un administrateur
Commentaire de grapevine le 01/05/2004 03:54:38

je trouve l'algo tres convivial et tes performant , merci

signaler à un administrateur
Commentaire de doula le 21/09/2005 14:34:45

algo très bien, et moi je suis d'accord avec FuryBond ...

signaler à un administrateur
Commentaire de whysea le 01/04/2006 10:59:42

Voici une adaptaction WINDEV pour ceux que ça intéresse ;)


PROCEDURE anagramme(str1 est une chaîne, str2 est une chaîne)

i est un entier

SI Taille(str1)=1 ALORS Trace(str1+str2)

POUR i=1 TO Taille(str1)
anagramme(Milieu(str1,2,Taille(str1)-1),str2+Gauche(str1,1))
str1=Milieu(str1,2,Taille(str1)-1)+Gauche(str1,1)
FIN

signaler à un administrateur
Commentaire de grapevine le 12/04/2006 15:09:47

Bonjour ,
J'ai testé ce code en C++ et en C# , il fonctionne très bien , dailleur je l'ai déja dit dans un des messages précédents . Ceci dit tres bizarement , j'ai envoyer ce code a Eclipse (en java) ,j'ai donc supprimé retirer le mot clé ref a tous les endroits ou il était mais l'algo ne fonctionne pas du tout en java aussi bizarement que cela puisse paraitre!!
J'ai essayé un autre truc : comme les objets sont tous passés ma reference en java , j'ai crée ma classe Mystring qui contenait une string en données membre et j'ai tenter de l'utiliser de la meme facon que la classe string , mais sans resultat aussi.
Si quelqu'un connait java , peut-il m'expliquer brievement pourquoi?

Merci par avance

signaler à un administrateur
Commentaire de grapevine le 13/04/2006 11:53:51

Ce code ne fonctionnat pas en java , j'ai pris un algorithme codé en C++ que j'ai adapté en java et qui fait rigoureusement la meme chose , vous trouverez le code à l'adresse :http://www.javafr.com/code.aspx?ID=37025

signaler à un administrateur
Commentaire de maestro1303 le 13/10/2007 22:19:19

Bonjour à tous,

Au risque de paraitre ridicule, y aurait il une adaptation de ce code en vba-E?

J'ai en effet un problème avec les permutations de 5 mots donc 120 possibilités:
Si ça peut aider en vba on peut écrire:
tableau=split("mot1;mot2;mot3;mot4;mot5",";")
avec
tableau(1)=mot1 et tableau(4)=mot4

Je veux avoir en sortie toutes les 120 permutations possibles des 5 mots.

Merci infiniment

Mon adresse est maestro1303@yahoo.fr

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Colorisation du code [ par CrAShGuN ] Bonjour tout le monde, je voudrais savoir comment faire pour colorer un mot défénie en une certaine couleur (par ex. bleu).Exemple : Comme dans un edi mot de passe [ par rintchu ] salut, je cherche une petite appli qui permettrait de trouver un mot de passe lorsqu'on connait le pseudo. D'apres mes idées, ca serait un programme q Mot de passe Access [ par Gabberzorus ] Salut a tous, J'ai mis un mot de passe sur ma bdd Access et je voudrais m'y connecter. Je sais que le mot de passe devra être mis dans le code ce qui Trouver le nombres de fois que ce trouve un mot dans un texte [ par dionysos6868 ] voila tout est dans le titre comment puis je fair pour recupere le nombre de fois que ce trouve un mot dans un taxt sans fair de boucle en utilisant i Algorithme Mot Caché [ par nuns ] Salut tout le monde,Je voudrais savoir si il y a quelqu ' un qui aurait un générateur de mot Caché, le jeux, avec les grille ou il faut chercher les m connexion a une page a l aide d un login et d un mot de passe [ par manuchka01 ] Bonjour a tous. Je suis d&#233;butant en C#.net n&#233;anmoins je connais un ptit peu le C#.Mon probleme est le suivant . Je fais une application ou l Comment écrire dans un répertoire protégé par login et mot de passe [ par mohamed_bn ] med belhassenje suis en train de d&#233;velopper une application , dans laquelle je voudrais &#233;crire dans un r&#233;pertoire prot&#233;g&#233; par Lire et trouver un mot dans un fichier WORD [ par petitelarve ] Bonjour a vous tous! Quelqu'un sait-il comment lire dans un fichier Word pour y effectuer une recherche sur des mots pr&#233;cis ? C'est un casse tete Générer un mot de passe [ par billou_13 ] Je voudrais savoir comment faire pour g&#233;n&#233;rer un mot de passe de 5 caract&#232;res pouvant contenir des lettres et des chiffres al&#233;atoi Authentification en C# [ par sab741 ] Bonjour,J'ai cr&#233;&#233; un formulaire avec un login et mot de passe ainsi qu'un bouton Login ( tout simple)!Or tous mes clients ne sont pas dans u


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,22 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.