ANAGRAMME D'UN MOT

gg00xiv Messages postés 656 Date d'inscription mercredi 22 août 2001 Statut Membre Dernière intervention 11 mars 2005 - 21 nov. 2003 à 16:49
maestro1303 Messages postés 37 Date d'inscription mardi 18 juillet 2006 Statut Membre Dernière intervention 7 décembre 2019 - 13 oct. 2007 à 22:19
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/18096-anagramme-d-un-mot

maestro1303 Messages postés 37 Date d'inscription mardi 18 juillet 2006 Statut Membre Dernière intervention 7 décembre 2019
13 oct. 2007 à 22: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
grapevine Messages postés 29 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 15 juillet 2009
13 avril 2006 à 11:53
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
grapevine Messages postés 29 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 15 juillet 2009
12 avril 2006 à 15:09
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
whysea Messages postés 1 Date d'inscription mardi 28 mars 2006 Statut Membre Dernière intervention 1 avril 2006
1 avril 2006 à 10:59
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
cs_doula Messages postés 4 Date d'inscription jeudi 12 juin 2003 Statut Membre Dernière intervention 16 juin 2010
21 sept. 2005 à 14:34
algo très bien, et moi je suis d'accord avec FuryBond ...
grapevine Messages postés 29 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 15 juillet 2009
1 mai 2004 à 03:54
je trouve l'algo tres convivial et tes performant , merci
EricMarchesin Messages postés 1 Date d'inscription lundi 11 août 2003 Statut Membre Dernière intervention 25 novembre 2003
25 nov. 2003 à 10:59
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.
gg00xiv Messages postés 656 Date d'inscription mercredi 22 août 2001 Statut Membre Dernière intervention 11 mars 2005 13
22 nov. 2003 à 08:50
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é.
cs_furybond Messages postés 10 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 29 décembre 2003
22 nov. 2003 à 01:41
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.
gg00xiv Messages postés 656 Date d'inscription mercredi 22 août 2001 Statut Membre Dernière intervention 11 mars 2005 13
22 nov. 2003 à 00:50
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)
cs_furybond Messages postés 10 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 29 décembre 2003
22 nov. 2003 à 00:34
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.
gg00xiv Messages postés 656 Date d'inscription mercredi 22 août 2001 Statut Membre Dernière intervention 11 mars 2005 13
21 nov. 2003 à 22:11
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
cs_furybond Messages postés 10 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 29 décembre 2003
21 nov. 2003 à 22:01
Array.Reverse inverse le tableau de <char>, 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' ?)
gg00xiv Messages postés 656 Date d'inscription mercredi 22 août 2001 Statut Membre Dernière intervention 11 mars 2005 13
21 nov. 2003 à 16:51
Je corrige :

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

Console.WriteLine(new string(chars));
gg00xiv Messages postés 656 Date d'inscription mercredi 22 août 2001 Statut Membre Dernière intervention 11 mars 2005 13
21 nov. 2003 à 16:49
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 :)
Rejoignez-nous