Newsgroup: it.hobby.scacchi
Titolo: Formule per girone all'italiana

Dopo anni e anni di studio sono arrivato a ideare le formule  
supersemplificatissime per generare i tornei con girone all'italiana. Le  
pubblico qui per chi desideri implementare questo tipo di accoppiamento  
nei propri programmi. Ovviamente gli accoppiamenti generati sono  
corrispondenti a quelli ufficiali FIDE.
Le variabili sono N, pari al numero dei giocatori, e deve essere pari (se  
i giocatori sono dispari, in realtà c'è il bye che li pareggia), e fissa  
per tutto il torneo, e poi S e T, che indicano il numero della scacchiera  
e il numero del turno per i quali si desidera conoscere l'accoppiamento.  
Ecco le formule:
La prima scacchiera è particolare:
turni dispari:
Bianco = (T+1)/2
Nero = N
turni pari:
Bianco = N
Nero = (T+N)/2
Le scacchiere successive sono semplici:
Bianco' = N/2-1+S+T*N/2
Nero' = N/2+1-S+T*N/2
e questi due valori vanno infine "modulati":
Bianco = (Bianco'-1)%(N-1)+1
Nero = (Nero'-1)%(N-1)+1
(% è l'operatore modulo, cioè resto, es. 10%3=1)
Tutto qui!
Alex

 corrispondenti a quelli ufficiali FIDE.
Sei un artista. Appena mi libero dal torneo voglio implementare il tuo
algoritmo.
Luigi
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Dopo anni e anni di studio 
Complimenti per la sintesi delle formule.
Ma anni e anni mi pare un pochetto enfatico: ci avrai messo decisamente di
meno!
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 supersemplificatissime per generare i tornei con girone all'italiana. 
cut
Si propone: il Nobel per la Matematica a Brunetti ed il Nobel per
l'Informatica a Forlano!
Ma....non dovrebbe essere il contrario?
Comunque il premio sarà consegnato durante una cena dove scorreranno...
fiumi di Sagrantino!
ciao


C'è un ulteriore semplificazione, accorpando i moduli nelle formule per le  
scacchiere successive,che prima ho suddiviso per maggior chiarezza.  
Riassumendo:
Prima scacchiera turni dispari:
Bianco = (T+1)/2
Nero = N
Prima scacchiera turni pari:
Bianco = N
Nero = (T+N)/2
Scacchiere successive:
Bianco = (N/2-1+S+T*N/2-1)%(N-1)+1
Nero = (N/2+1-S+T*N/2-1)%(N-1)+1
Per un esempio pratico, ho scritto un semplice javascript che genera la  
tabella (si può visionare lo script guardando il sorgente della pagina):  
http://e4e6.com/rr.html
Alex

 
http://e4e6.com/rr.html
Attento: Firefox (aka Iceweasel) su Debian Sid/Lenny mi dice che "n is
not defined" alla riga 1.
-- 
Salvatore Iovene
http://www.iovene.com

 not defined" alla riga 1.
Sarà un problema legato al bottone, non ho scritto un form completo per  
semplicità. Con IE e Opera funziona, e puoi comunque usare il javascript.  
Mi spiace per l'inconveniente.
Alex

 Nero = (T+N)/2
Come suggerisce Pierpaolo (non Pier Paolo), questa suddivisione si  
potrebbe benissimo eliminare, certo a discapito della leggibilità, ma  
togliendo così un "if". Dunque:
Bianco = (T%2)*(T+1)/2+(1-T%2)*N
Nero = (T%2)*N+(1-T%2)*(T+N)/2
Alex

 not defined" alla riga 1.
Prova ora! Ho messo un form normale, aggiunto tre commenti e usato le  
formule più compatte.
Alex

Per finire, un'ultima compattazione. Per chi usa il C o altro linguaggio  
che supporta l'espressione condizionale : ? si possono ridurre le formule  
a una sola espressione:
dati n=numero giocatori, s=scacchiera, t=turno, b=bianco (vero/falso)
giocatore =  
(b)?((s==1)?(t%2)*(t+1)/2+(1-t%2)*n:(n/2-1+s+t*n/2-1)%(n-1)+1):((s==1)?(t%2)*n+(1-t%2)*(t+n)/2:(n/2+1-s+t*n/2-1)%(n-1)+1)
Alex