mögliche kombinationen von 5 zeichen erstellen

Kurt Cobain

Erfahrenes Mitglied
Hallo

Ich will aus der den Zahlen 1 2 3 4 5 alle möglichen 3 stelligen Kombinationen ausgeben, wenn man die Reihenfolge nicht mit einbezieht.

Ja dann 10 Kombinationen.
123
124
134
234
125
235
345
145
315
245


Wie realisiere ich das mit PHP
Hatt jemand ne Idee?


Gruß
 
Das ganze nennt sich [wiki]Permutation[/wiki] und hier mal eine kleine Beispielsfunktion:

PHP:
function permutation( $chars, $length )
{
	if( $length < 2 OR !is_array( $chars ) OR empty( $chars ) )
	{
		return $chars;
	}
	$result = array();
	foreach( $chars as $key => $value )
	{
		$cChars = $chars;
		unset( $cChars[$key] );
		$sub = permutation( $cChars, $length - 1);
		foreach($sub as $subvalue)
		{
			$result[] = $value .' '.$subvalue;
		}
	}
	return $result;
}

$chars = array(1, 2, 3, 4, 5);
print_r(permutation($chars, 3));

Jetzt darfst du noch herausfinden, wie du die nicht gebrauchten herausfilterst ;)
 
Zuletzt bearbeitet:
hi

Danke...

aber wie muss ich den Code verändern, dass am Schluss nur die Zahlenkombinationen ausgegeben werden, die ich noch nicht in irgend einer anderen Reihefolge schon hatte.

Also bei dem Beispiel mit 5 Zeichen, dass nicht alle 60 kombinationen ausgegeben werden,
sondern nur die 10, die ich im Anfangsbeispiel hingeschrieben hab.


Gruß
 
Wenn du nur eine Zufallszahl von den 10 Zahlen ausgeben willst, dann pack sie doch einfach in ein array und geb eine Zufallszahl von dennen aus. Oder möchstest du nur 10 Zahlen aus den Grundzahlen dynamisch bestimmen?

Gruß
 
wenn ich es so mache wie Felix Jacobi geschrieben hat, dann krig ich ja alle möglichen Kombinationen ausgegeben
unter anderem:
123
213
231
132
321
312

wenn ich jetzt da bei jeder Kombination die Reihenfolge keine Rolle spielen soll, bleibt aus den Genannten ja nur noch
123 übrig, da sie wenn man die Reihenfolge außer Acht lässt ja alle gleich sind.

was muss ich da bei dem Code jetzt also noch dazufügen, dass er nicht ALLE 60 Kombinationen ausgibt, sonden nur die 10 die rauskommen wenn die Reihenfolge keine Rolle spielt

Gruß
 
Zurück