Aller au contenu

script générateur de mots


yuuzhantar

Sujets conseillés

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

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

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...