Archivio per marzo, 2012

L’algoritmo di Berger, ideato dallo scacchista austriaco Johann Berger, è un metodo procedurale per stilare un calendario (diviso in giornate) di un torneo sportivo svolto con il sistema del “girone all’italiana” composto da un qualsiasi numero di concorrenti o squadre.

Ecco la traduzione in Vb.Net:

Private Function CreaCalendario(Squadre() As String) As String
 Dim buffer As String = ""
 Dim numero_squadre As Integer = Squadre.Length
 Dim giornate As Integer = numero_squadre - 1
Dim casa(2) As String
 Dim trasferta(2) As String
 Array.Resize(casa, numero_squadre / 2)
 Array.Resize(trasferta, numero_squadre / 2)
 For i As Integer = 0 To (numero_squadre / 2) - 1
 casa(i) = Squadre(i)
 trasferta(i) = Squadre(numero_squadre - 1 - i)
 Next
 For i As Integer = 0 To giornate - 1
 buffer &= "Giornata " & i + 1 & "<BR>"
 If i Mod 2 = 0 Then
 For j As Integer = 0 To (numero_squadre / 2) - 1
 buffer &= j + 1 & " " & trasferta(j) & " - " & casa(j) & "<BR>"
 Next
 Else
 For j As Integer = 0 To (numero_squadre / 2) - 1
 buffer &= j + 1 & " " & casa(j) & " - " & trasferta(j) & "<BR>"
 Next
 End If
 Dim Pivot As String = casa(0)
 Dim Riporto As String = trasferta(trasferta.Length - 1)
 Array.ConstrainedCopy(trasferta, 0, trasferta, 1, trasferta.Length - 1)
 trasferta(0) = casa(1)
 Array.ConstrainedCopy(casa, 1, casa, 0, casa.Length - 1)
 casa(casa.Length - 1) = Riporto
 casa(0) = Pivot
 Next
 Return buffer
 End Function
Annunci

Ho pubblicato una nuova versione di Luna con tantissime novità, tra cui il salvataggio in cascata, il salvataggio solo su dati modificati e altro.

La potete scaricare sempre dai soliti URL che non sono cambiati