begin process at 2010 02 10 04:27:09
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

.NET

 > ANAGRAMME D'UN MOT

ANAGRAMME D'UN MOT


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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 :37 938

Auteur : furybond

Ecrire un message privé
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);
      }
  }
}




 Sources de la même categorie

Source avec Zip CHAT SERVER-CLIENT par abderrahmenbilog
Source avec Zip Source avec une capture Source .NET (Dotnet) SIMULATION DE CONSOLE POUR WINDOWS MOBILE par originalcompo
Source avec Zip Source .NET (Dotnet) BASE DE DONNÉES EN XML par DanMor498
Source avec Zip Source avec une capture Source .NET (Dotnet) SIMPLECONV - APPLICATION DE CONVERSION MONÉTAIRE AVEC TAUX E... par Jeffrey_
Source avec Zip Source .NET (Dotnet) TRAITEUR D'IMAGE (MINI) par ycyril

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) GENERATEUR DE MOT DE PASSE par Pierrrot
Source .NET (Dotnet) REMPLACEMENT DE MOTS OU CARACTÈRES par marm0tte

Commentaires et avis

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 :)

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

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' ?)

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

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.

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)

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.


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é.

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.

Commentaire de grapevine le 01/05/2004 03:54:38

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

Commentaire de doula le 21/09/2005 14:34:45

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

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

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

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

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...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,045 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales