У меня есть массив неизвестной длины , который всегда будет иметь равномерно делимое количество значений, например:
print_r($initialarray);
Array ( [0] => 30 [1] => 31 [2] => 32 [3] => 33 [4] => 34 [5] => 35 )
Мне нужно создать наборы:
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;
Порядок значений делится на v, чтобы указать, что они являются множеством. Порядок значений в наборе не имеет значения (я собрал это случайно из моей головы). Как вы можете видеть, не может быть совпадений дубликатов в любом другом наборе или в том же наборе.
Я пробовал много разных вещей, чтобы придумать что-то, что работает.
Самым близким, что я получил, было помещение начальных значений в каскадный массив, содержащий все возможные допустимые совпадения:
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 ) )
Эти значения являются массивами в одном массиве, называемом $ sched.
Я оставил 30 из массива .. упс
Номера команд. Каждая команда должна сыграть каждую команду один раз. Расписание будет установлено таким образом, чтобы каждая команда играла только в одну игру в неделю.
Расписание должно быть установлено на несколько недель, чтобы все игры можно было играть без участия команды более одного раза в неделю.
Я уже использовал функцию перестановок, и именно так я создал массив выше, у которого нет идентичных совпадений. Мне нужно теперь выяснить, как вывести расписание, как показано в наборах выше. (помните, что порядок, в котором приведен пример, не имеет значения, если ни одна команда не сыграет дважды в одном сете)
$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;
}
Так что это не сработало, я усложняю это сверх того, что должно быть, и я не могу больше обдумывать проблему. Буду очень признателен за любую помощь, даже если это означает, что начинать сначала!