Page 1 sur 1

Generateur de combnaisons

Posté : 20 sept. 2014, 00:13
par hellophp
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 =)

Re: Generateur de combnaisons

Posté : 20 sept. 2014, 19:14
par xTG
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');