Construction d'anagrammes

Soyez le premier à donner votre avis sur cette source.

Snippet vu 16 378 fois - Téléchargée 15 fois

Contenu du snippet

ce soft permet a partir d'une chaine de sortir la liste des anagrammes possibles en evitant les redondances.

Source / Exemple :


import java.util.ArrayList;
import java.util.LinkedList;

public class Anagramme {
	

	/**

  • @param t
  • @param saut
  • @param size
  • @return
  • /
public static ArrayList<String> generer(ArrayList<String> t) { String racine; ArrayList <String> ch= new ArrayList <String>(); ArrayList <String> h= new ArrayList <String>(); ArrayList <String> result= new ArrayList <String>(); LinkedList <String> ret= new LinkedList <String>(); int i, a; if (t.size() == 1) { return t; } else { for (i = 0; i < t.size(); i++) { racine = t.get(i); if (ret.indexOf( racine)>=0){ }else { ret.add( racine ); h.clear() ; h.addAll( t); try{ h.remove( i);} catch (Exception e){System.out.println(e.getMessage()+t.size() );} a = result.size(); ch = generer(h); result.addAll(ch); for (int j = a; j < result.size(); j++) { result.set(j, racine + result.get(j)); } } } return result; } } public static void main(String[] args){ ArrayList <String> po=new ArrayList <String >(); ArrayList <String> pan= new ArrayList <String >(); po.add( "e"); po.add( "s"); po.add( "s"); po.add( "a"); po.add( "i"); pan=Anagramme.generer( po ); for (int i=0;i<pan.size() ;i++){ System.out.println(pan.get(i) ); } System.out.println(pan.size() ); } }

Conclusion :


Si vous avez des trucs a ajouter faites moi signe. Je ne l'ai pas finalisé actuellement il affiche les differents anagrammes dans la console mais vous pouvez les charger dans une arraylist je vous en laisse le soin

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
vendredi 25 janvier 2008
Statut
Membre
Dernière intervention
26 mars 2010

Elle m'a inspiré pour un algo génétique. merci
Messages postés
4
Date d'inscription
mardi 4 avril 2006
Statut
Membre
Dernière intervention
3 novembre 2008

le code marche parfaitement bien psyckan si on prend denombra le nombre de solution c 8! ce qui donne exactement 40320 solutions mais dans le second cas que tu enumeres on a 2 o dans le mot donc les cas ou la permutation occure entre ces deux lettres quand elles sont proches doivent etre omises donc le nombres de compositions sera moindre on aura 6!*7*2*2 ce qui donne exactement 22160. Ce n'est que du denombrement j'espere que ca va. Bye et merci
Messages postés
24
Date d'inscription
jeudi 12 juin 2003
Statut
Membre
Dernière intervention
19 janvier 2010

@Psyckan : Pour le 1er problème, je ne sais pas, c'est étrange. Tu es sûr d'avoir un buffer de sortie assez grand pour afficher les 40'000 solutions ?

Pour la 2ème question, c'est car tu as 2x la lettre 'o' et tu n'as plus le 'e', ça réduit de moitié les possibilités (permuter les 2 'o' ne changera pas un mot)
Messages postés
135
Date d'inscription
vendredi 27 août 2004
Statut
Membre
Dernière intervention
8 mai 2010

Merci pour cette source, mais j'y ai trouvé un petit soucis.
En effet, j'ai copié le code et compilé et ça m'a permis de trouver quelque anagrammes. J'ai alors essayé de trouver la solution pour le mot "denombra" et ne me donne 40320 solutions mais qui commencent seulement par les lettres R et A et ne me trouve pas la solution qui est "doberman". J'ai ensuite remarque que si, au lieu de "denombra", on rentre "donombra" le programme trouve 20160 solutions alors que les deux mots ont le même nombres de lettres. Je voudrais donc savoir d'où vien le problème.
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
34
Stellartois -> il n'y a pas de zip joint, le code est à copier dans ton IDE (eclipse sans doute)
++
Afficher les 7 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.