Algoritmo personalizzato della parentesi del torneo

0

Sono in preparazione per un torneo di tiro con l'arco ma sono bloccato perché vogliono un abbinamento specifico per i giocatori. C'è il solito 1-32,2-31,3-30 ecc. Ma il modo in cui vogliono che l'albero sia specifico.

Per ora sto producendo l'array con questo

$players = range(1, $range);
$count = count($players);
for ($i = 0; $i < log($count / 2, 2); $i++) {
    echo $i;
    echo '<br>';
    print "<pre>";
    print_r($players);
    print "</pre>";
    $out = array();
    foreach ($players as $player) {
        $splice = pow(2, $i);

        $out = array_merge($out, array_splice($players, 0, $splice));

        $out = array_merge($out, array_splice($players, -$splice));
    }

    $players = $out;
}

Con un'uscita di

Array
(
    [0] => 1
    [1] => 16
    [2] => 8
    [3] => 9
    [4] => 4
    [5] => 13
    [6] => 5
    [7] => 12
    [8] => 2
    [9] => 15
    [10] => 7
    [11] => 10
    [12] => 3
    [13] => 14
    [14] => 6
    [15] => 11
)

Tutto funziona alla grande tranne che vogliono l'albero come questo

Array
(
    [0] => 1
    [1] => 16
    [2] => 9
    [3] => 8
    [4] => 5
    [5] => 12
    [6] => 13
    [7] => 4
    [8] => 3
    [9] => 14
    [10] => 11
    [11] => 6
    [12] => 7
    [13] => 10
    [14] => 15
    [15] => 2
)

Noterai alcune differenze tra quelli a. Per esempio la corrispondenza 2-15 è nella posizione 8 e 9 dell'array mentre nella seconda è 14-15.

Mi sono preso alla testa per trovare un algoritmo per questo, ma sono bloccato.

Grazie

    
posta LefterisL 24.09.2014 - 08:54
fonte

0 risposte

Leggi altre domande sui tag