Алгоритм турнира в php - PullRequest
       2

Алгоритм турнира в php

1 голос
/ 12 сентября 2010

Мне нужна помощь. Я хочу создать один турнир. Допустим, у меня 6 игроков. 1 2 3 4 5 6

Я хочу создать несколько .. скажем, этапов ... Каждый игрок сыграет 5 матчей (количество игроков - 1) на 5 различных этапах. На одном этапе все игроки должны появиться только один раз.

Например, с 6 игроками я хочу получить эти результаты:

Squad 1:

1-2
3-4
5-6

Squad 2:

1-3
2-5
4-6

Squad 3:

1-4
2-6
3-5

Squad 4:

1-5
2-4
3-6

Squad 5:

1-6
2-3
4-5

Таким образом, на каждом этапе матчи должны быть уникальными, и каждый игрок должен играть с каждым игроком.

Мне нужен один алгоритм, который будет работать, даже если мне нужно 8 игроков, или 12, или 16, или 28.

Спасибо

1 Ответ

3 голосов
/ 12 сентября 2010
<?php
$numplayers = 6;
if ($numplayers % 2 != 0) $numplayers++; // Dummy

for ($round = 0;$round < $numplayers - 1;$round++) {
    echo 'Squad ' . ($round+1) . ":\n\n1-";

    for ($i = 0;$i < $numplayers-1;$i++) {
        if ($i % 2 == 0) {
            $player = ($numplayers-2) - ($i/2) - $round;
        } else {
            $player = ((($i-1)/2) - $round);
        }
        if ($player < 0) $player += $numplayers - 1;
        echo ($player+2);
        echo ($i % 2 == 0) ? "\n" : '-';
    }
    echo "\n\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...