Ich habe ein Array von einer unbekannten Länge die immer eine teilbare Menge von Werten haben, zum Beispiel:ein Spiel Zeitplan mit PHP erstellen _ schwieriger als ich dachte
print_r($initialarray);
Array ([0] => 30 [1] => 31 [2] => 32 [3] => 33 [4] => 34 [5] => 35)
Ich brauche Sets zu erstellen :
Set 1: 30 v 35; 31 v 34; 32 v 33; Set 2: 30 v 34; 31 v 33; 32 v 35; Set 3: 30 v 33; 31 v 32; 34 v 35; Set 4: 30 v 32; 33 v 34; 31 v 35; Set 5: 30 v 31; 32 v 34; 33 v 35;
Die Reihenfolge der Werte dividieren durch v, um anzuzeigen, dass es sich um einen Satz handelt. Die Reihenfolge der Werte im Set spielt keine Rolle (das habe ich zufällig aus meinem Kopf zusammengefügt). Wie Sie sehen können, kann es in keinem anderen Satz oder innerhalb desselben Satzes doppelte Sätze geben.
Ich habe viele verschiedene Dinge ausprobiert, um etwas zu finden, das funktioniert. Der nächstgelegene ich bekommen habe anzog die Anfangswerte in einer überlappenden Anordnung alle möglichen gültigen matchups enthalten:
Array ([0] => Array ([0] => 35 [1] => 31) [1] => Array ([0] => 34 [1] => 31) [2] => Array ([0] => 33 [1] => 31) [3] => Array ([0] => 32 [1] => 31))
Array ([0] => Array ([0] => 35 [1] => 32) [1] => Array ([0] => 34 [1] => 32) [2] => Array ([0] => 33 [1] => 32))
Array ([0] => Array ([0] => 35 [1] => 33) [1] => Array ([0] => 34 [1] => 33))
Array ([0] => Array ([0] => 35 [1] => 34))
Diese Werte-Arrays sind in einem Array $ Sched genannt. ich links 30 aus dem Array .. oops
Die Zahlen sind Teams. Jedes Team muss jedes Team einmal spielen. Der Zeitplan wird so festgelegt, dass jede Mannschaft nur ein Spiel pro Woche spielt. Der Zeitplan muss über mehrere Wochen festgelegt werden, damit alle Spiele gespielt werden können, ohne dass ein Team mehr als einmal pro Woche spielt.
Ich habe bereits eine Permutationsfunktion verwendet und das ist, wie ich Array darüber kam, die nicht identische Übereinstimmungen hat. Ich muss jetzt herausfinden, wie man den Zeitplan ausgibt, wie in den Sets oben gezeigt. (Unter Berücksichtigung der Tatsache, dass die Reihenfolge des Beispiel in ist nicht so lange egal, wie kein Team zweimal in der gleichen Serie spielt)
$count = count($initialarray);
$recount = $count -1;
for($u=0; $u < $count;$u++){
for($d=0;$d<$recount;$d++){
$vs[$u][$d] = $sched[$d][$u];
}
$recount -= 1;
}
so dass nicht funktioniert, ich verkompliziert dies über das, was es sein sollte und ich kann meinen Kopf nicht mehr um das Thema wickeln. Jede Hilfe, auch wenn es von vorn beginnt, wird sehr geschätzt!