Witam, jak wygenerowac wszystkie kombinacje ze znakow [a-z0-9] o dlugosci np. od 1 do 5 znakow ?
0
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);