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(0) As String
Dim trasferta(0) 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 & "
"
If i Mod 2 = 0 Then
For j As Integer = 0 To (numero_squadre / 2) - 1
buffer &= j + 1 & " " & trasferta(j) & " - " & casa(j) & ""
Next
Else
For j As Integer = 0 To (numero_squadre / 2) - 1
buffer &= j + 1 & " " & casa(j) & " - " & trasferta(j) & ""
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