Jak wygenerowac wszystkie kombinacje stringow

0

Witam, jak wygenerowac wszystkie kombinacje ze znakow [a-z0-9] o dlugosci np. od 1 do 5 znakow ?

0

Robisz sobie tablicę potrzebnych znaków i potem w kilku pętlach wywalasz wszystkie opcje :]

0
$ar1=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','0','1','2','3','4','5','6','7','8','9');
for($i=0; $i<=0; $i++)
{
for($j=$i;$j<count($ar1);$j++)
{
for($k=$j;$k<count($ar1);$k++)
{
print "<br />".$ar1[$i].$ar1[$j].$ar1[$k];
}
}
}

takie cos napisalem ale wyswietla tylko te ktore zaczynaja sie na a ...

0

Nie chce mi się tego pisać teraz, ale użyj pętli foreach dla tablicy $ar1 uzyskasz wszystkie kombinacje długości jednego znaku. Potem wklepujesz podobną pętlę w środek tej, będziesz miał 2 znaki. Postępujesz tak aż do poziomu 5 pętli w pętli.

0

A ja bym proponował rozwiązanie z rekurencją. Proste i przyjemne. Kwestia jednego for/foreach i if'a.

Niby przyszło do mnie, że ten post został skasowany, więc napisałem funkcyjkę:

function generuj($arg,$dlugosc,$ciag=''){  //pierwszy argument to tablica ze znakami, drugi długość ciągu generowanego
	for($i=0;$i<count($arg);$i++){
		if($dlugosc==1){
			echo $ciag.$arg[$i].'<br>';
		} else {
			generuj($arg,$dlugosc-1,$ciag.$arg[$i]);
		}
	}
}

$arg=array();
for($i=0;$i<10;$i++){
	$arg[]=$i;
}

generuj($arg,4);

1 użytkowników online, w tym zalogowanych: 0, gości: 1