begin process at 2010 03 22 13:23:22
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths et Algorithmes

 > CONSTRUCTION D'ANAGRAMMES

CONSTRUCTION D'ANAGRAMMES


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths et Algorithmes Classé sous :mot, astuce, changement, anagramme, redondance Niveau :Débutant Date de création :25/08/2007 Vu :9 532

Auteur : pch_hotline

Ecrire un message privé
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

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

Source

  • 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() );
  • }
  • }
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


 Sources du même auteur

Source avec Zip SIMPLEX X DEEPLY

 Sources de la même categorie

TEST DE PRIMALITÉ OPTIMISÉ par Julien39
Source avec Zip CLASSE MATRICE par frankladen11
Source avec Zip Source avec une capture RÉSOLUTION D'ÉQUATION GRÂCE AU CALCUL DES DÉTERMINANTS par frankladen11
Source avec Zip TYPE DE DONNÉES ABSTRAIT GRAPHE par smutsonberg
Source avec Zip Source avec une capture SIMPLEXE ET DUAL par MrRenaud

 Sources en rapport avec celle ci

ALGORITHME D'UN ANAGRAMME par grapevine
Source avec Zip ANALYSEUR LEXICALE par imranchems
Source avec Zip TEST S'IL EST POSSIBLE D'ÉCRIRE UN MOT AVEC LES LETTRES D'UN... par HEVs

Commentaires et avis

Commentaire de pumbaa666 le 19/12/2007 16:15:23 9/10

Salut. Très bonne source, bien qu'aucunement commentée.
J'ai mis 9 car devoir créer une ArrayList pour faire un mot, c'est pas terrible. Mais j'ai codé une solution :

private static ArrayList<String> makeList(String string)
{
ArrayList<String> result = new ArrayList<String>(string.length());
char[] tab = string.toCharArray();

for(int i = 0; i < tab.length; i++)
result.add(""+tab[i]);

return result;
}

public static ArrayList<String> generer(String input)
{
ArrayList<String> listedInput = makeList(input);//new ArrayList<String>(input.length());
return generer(listedInput);
}


Ensuite tu met ton autre méthode generer en private, et tu appele comme ça :
pan = Anagramme.generer("essai");

Commentaire de Stellartois le 07/06/2008 18:25:06

Comment télécharger le programme? =s

Commentaire de PCPT le 07/06/2008 19:49:22 administrateur CS

Stellartois -> il n'y a pas de zip joint, le code est à copier dans ton IDE (eclipse sans doute)
++

Commentaire de psyckan le 02/11/2008 01:46:16

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.

Commentaire de pumbaa666 le 03/11/2008 08:47:40

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

Commentaire de pch_hotline le 03/11/2008 10:27:26

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

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Anagramme trouver le bon mot [ par flo0011 ] Je veux essayer de creér un jeu mais je ne sais pas comment m'y prendre:Ce jeu consiste à découvrir le bon mot vis-à-vis d'une suite de lettres dans l Anagramme Récursif [ par Paradox0 ] Bonjour j'ai un petit probleme pour faire le programme suivant j'ai trouvé des choses sur le net mais elles ne correspondent pas a mon résultat . Si q SESSIONS [ par wissemsabria ] salam je voudrais realiser une application web contient deux champs 1ére champs  contient login(identifiant) et 2éme champs contient le mot de passe  eliminer la redondance des éléments dans un vecteur [ par papillon2000 ] bonsoir a tous, je veux faire une méthode pour eliminer les eléments redondan dans un vecteur, (en java). récupération de Mot de passe [ par malbackt ] C'est encore moi, maintenant j'ai le problème suivant :Je veux récupérer le mot de passe entré par l'utilisateur dans une applet en  java !!au début j Layout : Supprimer un element [ par Rorix83 ] Bonjour.Voici mon problème : J'ai un FlowLayout qui contient deux JPanel. J'aimerais pouvoir supprimer dynamiquement le dernier à un moment donné.Aprè problème avec TextArea [ par baster200x ] bonjour tout le monde, j'ai un petit problème .... ben j'ai réalisé un programme de tel façon il prend un texte à partir d'un TextArea [ String text = requete a travers un proxy [ par hannounamah ] salutj'ai une fonctionnalité à développer : je dois faire la capture des requetes d'un client (dans le context d'un proxy)par exp lorsqu'il tape www.g mot de passe [ par jeeb2009 ] bonjour a tous, je souhaite generer les password automatiquement est il possible?? si oui comment faire??? merci Recherche des mots corrects [ par greg3075 ] Bonjour, je suis nouveau sur ce forum et j'espère que vous pourrez m'aider.Le problème est le suivant : j'entre des lettres à la console et avec ces l


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

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 : 0,374 sec (4)

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