Brute force php

Contenu du snippet

Une fonction qui trouve toutes les combinaisons de n caractères dans un charset donné.
Une version récursive (plus jolie) et une version linéaire. Je ne sais pas laquelle est la plus performante, mais de toute manière si vous recherchez la performance autant traduire ce code dans un autre langage.

Source / Exemple :


<?
	function map($lettre)
		echo chr($lettre);
	
	$charset = range(97,122);
	$num = count($charset);
	$last = $num-1;
	$length = 5;
	
	$mot = array();
	while($mot[$length - 1] <= $last)
	{		
		for($i = 0; $i < $num; ++$i)
		{
			$mot[0] = $i;
			array_walk($mot, 'map');
			echo "\n";
		}
		
		$j = 0;
		while($mot[$j] == $last)
		{
			$mot[$j] = 0;
			++$j;
		}
		
		if($j == $length)
			break;
			
		$mot[$j]++;
	}
?>

En récursif :
<?php
$charset = range(97, 122);

function recurse($width, $position, $base)
{
    global $charset;
    foreach($charset as $char)
    {
        if ($position < $width - 1)
            recurse($width, $position + 1, $base.chr($char));
        echo $base.chr($char)."\n";
//      ici on fait ce que l'on veut du mot là je l'affiche.
	}
}

$maxChars = 3;
for($width = 1; $width < $maxChars+1; ++$width)
    recurse($width, 0, "");
?>

A voir également

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.