Швейцарский Турнир. Командное противостояние нескольких раундов без повторов и упорядочений

Я пытаюсь сделать турнир по швейцарской методике.
У меня, например, 12 команд, и в каждом раунде у каждой команды есть очки (от 0 до 100), и они выигрывают, проигрывают или ничьи.
Я хочу выяснить, какие команды играют друг против друга, на следующих условиях:

  • Упорядочено по победам, розыгрышам и очкам.
  • Не играться ранее.

В каждом раунде я получал команду foreach с возможными командами, с которыми можно играть в массиве следующим образом: (Ключ указывает на идентификатор команды, а значения указывают на все возможные команды, сыгранные с разделением «,»)

[2] => 4,11,6,10,3,8,7,12,
[5] => 4,11,9,10,3,8,1,12,
[4] => 2,5,6,10,8,7,12,
[11] => 5,9,10,3,8,7,
[9] => 5,11,6,3,8,7,12,
[6] => 2,4,9,10,3,7,12,
[10] => 2,5,4,11,6,8,7,12,
[3] => 5,11,9,6,8,7,
[8] => 2,5,4,11,9,10,3,1,12,
[7] => 2,4,11,9,6,10,3,1,12,
[1] => 5,4,11,9,6,3,8,7,
[12] => 2,5,4,9,6,10,8,7,

Сначала у меня есть все команды, сыгранные ранее в массиве: (ключ указывает на идентификатор команды)

Array (
[1] => 2,10,12,
[2] => 1,9,5,
[3] => 4,12,10,
[4] => 3,11,9,
[5] => 6,7,2,
[6] => 5,8,11,
[7] => 8,5,8,
[8] => 7,6,7,
[9] => 10,2,4,
[10] => 9,1,3,
[11] => 12,4,6,
[12] => 11,3,1, )

Затем я получаю все команды, упорядоченные по выигрышам, проигрышам и очкам в массиве: (Ключи указывают также идентификатор команды)

Array
(
[1] => 2
[2] => 5
[3] => 4
[4] => 11
[5] => 9
[6] => 6
[7] => 10
[8] => 3
[9] => 8
[10] => 7
[11] => 1
[12] => 12
)

Наконец, я пытаюсь найти возможный матч против двух команд.

$checks = array();
$pairs = array();
for ($i = 1; $i <= count($list); $i++) {
for ($j = 1; $j <= count($list); $j++) {
if(strpos($plays[$list[$i]], $list[$j]) !== false || $list[$i] == $list[$j] ) {
}else{
if(!in_array($list[$i],$checks) && !in_array($list[$j],$checks)){
$pairs[] = $list[$i].",".$list[$j];
$checks[] = $list[$i];
$checks[] = $list[$j];
}
}
}
}

И наконец я печатаю массив «$ pair». Это показывает:

Array
(
[0] => 2,4
[1] => 5,11
[2] => 9,6
[3] => 10,8
[4] => 3,7
)

Это не правильно, потому что team_id 1 и team_id 12 не могут играть в этом раунде, потому что играли раньше:

Я не знаю, как это решить.

Еще раз спасибо!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]