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