Generateur de combnaisons

hellophp
Invité n'ayant pas de compte PHPfrance

20 sept. 2014, 00:13

Bonjour à tous,

Actuellement je fait des challenges sur un célèbre site conçu pour :D

Et pour la résolution d'une des énigmes, j'ai besoin d'un générateur de mot. Après quelques fofo et du bidouillage de code, j'ai plus ou moins réussi.

L'algo dois trouver toutes les combinaisons de caractères dans une liste.
Si la liste contient moins de 10 caractères, de a à j, tout marche bien.
Mais si cette liste contient plus de 10 caractères, admettons de 'a' à 'k', le résultat n'est plus conforme.

Plus conforme dans le sens ou, si je lui demande des mots de 3 caractères, il va bien faire le boulot jusqu'à la 10eme lettre ' jjj ' puis il va passer sur du 4 caractères sans le demander. (le 11eme n'est même pas utilisé).
        $nb_car = 4;
	$tab = array('a','b','c','d','e','f','g','h','i','j');       //,'k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'); 
	$tab_long = count($tab); 
	$nb_combi = pow($tab_long, $nb_car); 

 
	for($i=0; $i<$nb_combi; $i++) { 
		$chaine_convertie = base_convert($i,10, $tab_long); 
		while (strlen($chaine_convertie) < $nb_car) { 
			$chaine_convertie = '0'.$chaine_convertie; 
		} 
		$tabl_indice_encours = str_split($chaine_convertie); 
		 
		$chaine_finale = ''; 
		foreach ($tabl_indice_encours as $element) { 
			$chaine_finale .= $tab[$element]; 
		} 
		$tableau_index_possibles[] = $chaine_finale; 
	} 
	
	 
	$result = count($tableau_index_possibles);
	for($i=0; $i<$result; $i++) { 
		print($tableau_index_possibles[$i]);
		echo "<br>";
	}

Si vous avez des idées, je suis preneur !
Merci d'avance =)

ViPHP
xTG
ViPHP | 7331 Messages

20 sept. 2014, 19:14

Bah c'est ce que ton script fait ce que tu décris... 8-|
$nb_car = 4;
        $tab = array('a','b','c','d','e','f','g','h','i','j');       
//,'k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'); 
Je suis pas sûr d'avoir compris du coup...

Si tu veux les combinaisons de 3 lettres de l'alphabet on corrige la boulette et :
$nb_car = 3;
        $tab = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');