yuuzhantar Posté 8 Mai 2006 Partager Posté 8 Mai 2006 bonjour je voudrais savoir si il existe un moyen de créer un script qui génère des mots ( même si ils sont incompréhensibles ) je pense déjà savoir ce qu'il lui faut mais je ne sais pas comment l'écrire une liste de caractères carac = array(a,b,c,d,e,f) une longueur de mot long = '3'; voila après se serait comme un compteur il ferait toutes les combinaisons possibles de 3 caractères de longueur avec les caractères disponibles voila se qu'il ferait aaa aab aac aad aae aaf aba abb abc abd abe abf aca acb ... est ce possible ??? merci d'avance pour votre aide yann Lien vers le commentaire Partager sur d’autres sites More sharing options...
TheRec Posté 8 Mai 2006 Partager Posté 8 Mai 2006 Bonjour, Normalement ce code devrait fonctionner... il y a des exemples semblables dans les commentaires du manuel PHP... L'utilisation de la récursivité peut poser problème lorsque la longueur et le nombre de combinaisons possibles sont élevés...il y a d'autres moyen de procéder (génération aléatoire de toutes les combinaisons et utilisation de la fonction "array_unique" par exemple...mais pour une utilisation à petite échelle la récursivité devrait faire l'affaire) <?php function combinations($length, &$alphabet) { if ($length == 1) { $combination = array(); while (list($row_key, $row) = each($alphabet)) { $combination[] = array($row); }; } else { $combination = combinations($length - 1, $alphabet); reset($combination); $new_combination = array(); while (list($row_key, $row) = each($combination)) { reset($alphabet); while (list($l_key, $l) = each($alphabet)) { $new_row = $row; $new_row[] = $l; $new_combination[] = $new_row; }; } $combination = $new_combination; } return $combination; } // Caractères possibles $combination_parts = array('a','b','c','d','e','f'); // Longueur de la châine de sortie $combination_length = 5; echo 'Nombre de combinaisons possibles: '.pow(count($combination_parts), $combination_length).'<br />'; foreach ($combinations as $key => $combination) { echo ($key+1).": ".implode(" ", $combination)."<br/>"; }?> Désolé pour l'indentation, mais CODEBOX ne semble pas aimer les espaces...ni les tabulations... je me souviens en avoir parlé à Dan, mais la modification du CSS à du être perdue lors d'une mise à jour P.S. : Au passage, si cherche à comprendre le problème au niveau mathématique, je te présente les "Arrangement avec répétition" ... Si tu aimes les mathématiques tu ne devrais pas avoir de peine à comprendre P.S.S. : En espérant que tu n'utilises pas ce code à des fins de piratage... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant