Soyez le premier à donner votre avis sur cette source.
Vue 5 604 fois - Téléchargée 846 fois
<?php /** Attention ! Rechercher toutes les combinaisons est un long processus. Par exemple une $string de 10 caractères correspond à 3 628 800 combinaisons. Veuillez adapter le max_execution_time et le memory_limit du php.ini en conséquence. (La config de base de wampserver 3.0.4 est suffisante pour une $string de 9 caractères) */ // Testé avec PHP 5.6.19 (Wampserver 3.0.4 (config de base)) / Firefox 48.0.2 / Intel celeron 3050 1.60GHZ >>> PC lent ! function all_combinations($a) { $b = str_split($a); $c = array(); foreach($b as $k => $v) { $d = implode(array_diff_key($b, array($k => $v))); if(strlen($d) >= 3) { foreach(all_combinations($d) as $vv) { $c[] = $v . $vv; } } else { $c[] = $v . $d; $c[] = $v . strrev($d); } } return $c; } $string = 'abcdefgh'; $range = range(1, strlen($string)); $start = microtime(true); $combinations = all_combinations($string); $end = microtime(true); echo 'Nombre de combinaisons possibles: ' . array_product($range) . '<br>'; echo 'Nombre de combinaisons crées: ' . count($combinations) . '<br>'; echo 'Nombre de combinaisons uniques crées: ' . count(array_unique($combinations)) . '<br>'; echo "Temps d'execution: " . number_format($end - $start, 3) . " sec <br>"; /** Nombre de combinaisons possibles: 40320 Nombre de combinaisons crées: 40320 Nombre de combinaisons uniques crées: 40320 Temps d'execution: 1.814 sec */ echo '<pre>'; print_r(array_unique($combinations)); echo '</pre>';
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.