Anagramme d'un mot

Soyez le premier à donner votre avis sur cette source.

Snippet vu 50 428 fois - Téléchargée 29 fois

Contenu du snippet

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 / Exemple :


// 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);
      }
  }
}

A voir également

Ajouter un commentaire Commentaires
Messages postés
37
Date d'inscription
mardi 18 juillet 2006
Statut
Membre
Dernière intervention
7 décembre 2019

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
Messages postés
29
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
15 juillet 2009

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
Messages postés
29
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
15 juillet 2009

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
Messages postés
1
Date d'inscription
mardi 28 mars 2006
Statut
Membre
Dernière intervention
1 avril 2006

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
Messages postés
4
Date d'inscription
jeudi 12 juin 2003
Statut
Membre
Dernière intervention
16 juin 2010

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

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.