Brute force mit Arrays

DJLopez

Mitglied
Hallo,

ich habe hier zwar schon einige Skripte gesehen, die sich mit Brute force und Strings befassen, aber nicht mit Arrays. Ich habe ein Array mit X Einträge (ganze Wörter), die alle miteinander kombiniert werden sollen.

Beispiel:
Array enthält: Oma, Opa, Enkel
Ergebnis: Oma Opa Enkel, Opa Oma Enkel, Enkel Oma Opa, Enkel Opa Oma, etc.
Aber auch alle Wörter einzeln und in kleineren Gruppen, also "Enkel", "Opa", "Oma", "Enkel Oma", "Enkel Opa", "Oma Opa", etc.
Was nicht sein sollte (wäre aber auch erstmal egal) ist, dass die Wörter sich selber wiederholen, also "Enkel Enkel Enkel" oder so.

Würd mich freuen, wenn jmd sowas zur Hand hätte :)

Gruß
 
naja, du könntest das ganze rekursiv durchlaufen lassen, jeder eintrag im Array, wäre eine tiefere ebene, im Sinne von:

array(0, 1, 2)

0
0 1
0 1 2
0 2
0 2 1
1
1 0
1 0 2
1 2
1 2 0
2
2 0
2 0 1
2 1
2 1 0

das ist ja noch recht übersichtlich, aber jetzt stelle dir das mal mit 1000 Einträgen vor Oo
dann hast du plötzlich ein array im sinen von:

array[0][1][2][3][4] ... [1000]
das du rekursiv abarbeiten lassen könntest, natürlich nur wenn du den timeout deaktivierst :D
 
Wir gehen also mal davon aus, dass das Passwort aus 3 Teilen besteht

(ich mach das mal auf die simple, leicht verständliche Weise)
PHP:
<?PHP
$wortliste = array ( 'Opa', 'Oma' );
$wortliste[] = 'Enkel'; // Den hab ich vergessen
$count = count($wortliste); 

$a = 0; // 1. Passwortteil
$b = 0; // 2. Passwortteil
$c = 0; // 3. Passwortteil

while ( $a < $count  )
{
  while ( $b < $count  )
  {
    while ( $c < $count  )
    {
      $passwort = $wortliste[$a].$wortliste[$b].$wortliste[$c];
      
      //[Hier käme der Teil, wo das Passwort angewendet wird]
      $passwortliste .= $passwort."<br>";
      
      $c++; // Eins weiter
    }
    $c=0; // Wieder von vorne
    $b++;// Dafür hier eins weiter
  }
  $b=0; 
  $a++;
}

//Fertig
echo $passwortliste;
?>

Wenn die dreifach-Kombination ausgeschlossen werden soll:
Wenn $a = $b und $b = $c, dann nichts tun...

Das Ganze kann noch extrem eingekürzt und zusammengefasst werden, aber wir wollen ja was lernen ;)
 
Zuletzt bearbeitet:
Zurück