Mi piacerebbe sviluppare una libreria che:
- riceve n giocatori nell'input
- risposta con le parentesi dei tornei in uscita.
Vorrei chiederti che tipo di algoritmo devo usare per scegliere l'albero corretto che deve essere generato per ogni input. Sono interessato ai tornei a eliminazione diretta e ai giocatori dello stesso club che devi sfidare il più tardi possibile.
Ho trovato questo algoritmo di base:
$players = range(1, 3);
$count = count($players);
// Order players.
$max = log($count / 2, 2);
echo "max ".$max."<br>";
for ($i = 0; $i < log($count / 2, 2); $i++) {
$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;
}
// Print match list.
for ($i = 0; $i < $count; $i++) {
printf('%s vs %s<br />%s', $players[$i], $players[++$i], PHP_EOL);
}
Che ne pensi? È una buona soluzione?
La seconda domanda è: come posso disegnare l'albero della staffa, qualche suggerimento? Devo usare html / javascript.
Grazie.