L’algoritmo di Berger scritto in Vb.Net

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

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.