Sto cercando algoritmi per creare parentesi ad eliminazione singola e doppia eliminazione.
Il primo passo era capire l'algoritmo di seeding, incluso bye, che ho trovato in diversi punti in SO: qui (dove i byte possono essere introdotti semplicemente b sostituendo gli ultimi n team in eccesso e spostando le posizioni seme n volte) e qui (ciao sono cotti dentro, e ho solo bisogno di spostare le posizioni).
Che è un miglioramento rispetto all'algoritmo che stavo usando quali squadre abbinate come questa: [(x, -x - 1) for x in range(num_players / 2)]
e invece di definire il prossimo round come ci si aspetterebbe: Winner Match_i vs Winner Match_i+1
sarebbe Winner Match_i vs Winner Match_n-i
, abbastanza non intuitivo e più difficile da mantenere .
Ma ora sto cercando di definire gli algoritmi per creare le parentesi. Ho difficoltà a trovare algoritmi effettivi per generare parentesi di eliminazione singole e doppie parentesi di eliminazione.
Non sono troppo preoccupato per la generazione di parentesi ad eliminazione singola perché è piuttosto semplice, anche con i byte e anche considerando che sto supportando diverse modalità di consolazione.
Ma le parentesi a doppia eliminazione mi stanno buttando fuori. Ovunque guardi, vengono costruiti in un modo diverso. E non è solo che non posso sceglierne uno, è anche che non riesco a capire come creare le associazioni tra le partite, specialmente quando sono coinvolti i bye perché rompono la struttura delle parentesi e rendono il problema più difficile da risolvere.
Vorrei pubblicare il mio codice ma è piuttosto lungo, disordinato e ha alcuni bug in cui la staffa non viene generata correttamente, ecco perché sto cercando altri affidabili algoritmi di generazione di parentesi.