Consulta le faq
Algoritmi di Judo in Cloud
Gli algoritmi che usiamo
Qui di seguito vengono mostrati gli algoritmi che utilizziamo all'interno del programma per tutte le nostre operazioni. Crediamo nella trasparenza e nell'onestà, e vogliamo fornirvi tutti i dati per mostrarvi la correttezza del nostro lavoro.
Sorteggi pre agonistici
Per le categorie non agonistiche, l'idea è di suddividere gli atleti in tante mini pool da massimo 4, facendo vari gironi all'italiana, cercando di tenere il più lontano possibile bambini della stessa società. Ad esempio, 5 atleti diventano una pool da 2 e una da 3, 8 atleti 2 pool da 4 e 9 atleti 3 da 3.
Per ogni categoria, prendiamo la lista di atleti, li ordiniamo prima casualmente e poi per società. Dopo creiamo un numero di tornei pari al numero di atleti diviso 4. Infine distribuiamo gli atleti come se dessimo le carte in un gioco: primo atleta al primo tabellone, secondo al secondo e così via.
Meglio di tre
Per le categorie agonistiche con due atleti, il tipo di tabellone che usiamo è al meglio di tre. Gli atleti combatteranno due incontri, e se sono a parità di vittorie verrà effettuato un terzo incontro. Gli atleti tengono sempre lo stesso colore di cintura e non si invertono tra un combattimento e l'altro, per semplificare l'ingresso sul tatami.
Girone all'italiana
Per le categorie agonistiche con tre, quattro o cinque atleti, il tipo di tabellone che usiamo è il girone all'italiana (tutti contro tutti). Gli atleti vengono ordinati casualmente e poi vengono create tutte le combinazioni con il metodo circolare.
Per la classifica vengono contati solamente i punti judo: Ippon, doppio Wazaari o Hansoku Make avversario contano 10 punti, Wazaari conta come 1 punto. Nel caso due atleti abbiano lo stesso punteggio, va sopra l'atleta che ha vinto l'incontro diretto.
Doppia Eliminazione
Per le categorie agonistiche con più di cinque atleti, il tipo di tabellone che usiamo è il torneo a doppia eliminazione (o eliminazione con recupero).
Iniziamo creando le posizioni del tabellone dividendole tra le quattro pool A,B,C,D e poi le ordiniamo casualmente. Ad esempio, per 16 atleti la pool A usa le posizioni 1,5,9,13 e noi le possiamo randomizzare in 5,13,9,1 (ovviamente il randomico è fatto dal computer e non manualmente).
Ordiniamo poi gli atleti per società ed assegnamo ad ognuno ad una pool, se dessimo le carte in un gioco: primo atleta alla pool A, secondo al B, terzo al C, quarto al D, quinto di nuovo alla A e così via. Quando diamo un atleta ad una pool, gli assegniamo l'ordine casuale che abbiamo prima creato: ad esempio, il primo atleta sarà in posizione 5, il quinto atleta in posizione 13 e così via. In questo modo ci assicuriamo che atleti di una stessa società siano divisi tra varie pool ed ogni pool sia ordinata randomicamente. Abbiamo adesso gli atleti in un ordine univoco che rispetta il regolamento.
Per creare ora gli incontri, l'algoritmo è molto interessante. Prendiamo la potenza di 2 più vicina al numero di atleti (8,16,32,...) e consideriamo le posizioni extra che aggiungiamo come posti vuoti nel tabellone. Partiamo da un ordine di numeri (array, per gli informatici) che contiene solamente il numero 1. Per ogni ciclo, aggiungiamo a destra di ogni numero lo stesso numero sommato al ciclo in cui siamo. Ad esempio:
- 1: 1
--> aggiungi 1 ad ogni elemento e aggiungi a destra
- 2: 1 2
--> aggiungi 2 ad ogni elemento e aggiungi a destra
- 4: 1 3 2 4
--> aggiungi 4 ad ogni elemento e aggiungi a destra
- 8: 1 5 3 7 2 6 4 8
--> aggiungi 8 ad ogni elemento e aggiungi a destra
- 16: 1 9 5 13 3 11 7 15 2 10 6 14 4 12 8 16
Per i recuperi, si inseriscono alle posizioni corrette gli atleti che hanno perso contro uno dei semifinalisti.
Per la classifica finale, si prendono i vincitori e gli sconfitti delle varie finali.
Calcolo numero e durata incontri
Per il calcolo della stima della durata di una classe d'età, facciamo n incontri ✕ (tempo incontro + 1 minuto extra) / n tatami. Ad esempio, 100 incontri che durano 2 minuti l'uno in una competizione con 3 tatami durerà indicativamente 100 ✕ (2+1) / 3 = 100 minuti circa, cioè un'ora e quaranta.
Per il calcolo degli incontri di una categoria, è possibile farlo partendo dal numero di atleti (chiamiamolo n).
- Al meglio di tre, contiamo 2 incontri;
- Girone all'italiana, (n² - n) / 2
- Girone preagonistico, si fanno i calcoli dei vari mini gironi all'italiana
- Doppia Eliminazione, esiste una formula specifica. Abbiamo dal tabellone principale (n - 1) incontri + dai recuperi (4 ✕ (log₂nn - 2)), dove nn è la potenza di 2 più vicina a n. Se la scrittura (log₂nn) dovesse confondere, è semplicemente il numero di colonne con incontri del tabellone principale. La dimostrazione è lasciata al lettore :P
Classifica società
Per la classifica società, i punti assegnati in base alle posizioni degli atleti sono i seguenti:
- 1: 10
- 2: 8
- 3: 6
- 4: 4
- 5: 4 (solo nei tornei a doppia eliminazione)
Assegnamento tornei automatico
Per dividere automaticamente i tabelloni tra i tavoli, il metodo è semplice. Prima di tutto, ordiniamo i tabelloni in ordine decrescente in base al numero di incontri.
A questo punto, diamo un torneo alla volta al tatami con meno incontri. In questo modo ci assicuriamo la divisione ottimale degli incontri, tuttavia supponendo che gli incontri siano uguali. Non facciamo distinzioni tra classi d'età diverse (che hanno magari tempi d'incontro diversi) o differenza tra categorie (le più leggere impiegano mediamente meno tempo delle più pesanti). Usa questa funzione con parsimonia.