questa è una prova veloce:
pagina aspx
codice:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Calendario squadre calcio.aspx.vb" Inherits="prove_Calendario_squadre_calcio" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Pagina senza titolo</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Calendario" />
<table border="1" cellpadding="10" cellspacing="0">
<tr>
<td><asp:Literal ID="Literal1" runat="server"></asp:Literal></td>
<td><asp:Literal ID="Literal2" runat="server"></asp:Literal></td>
</tr>
</table>
</div>
</form>
</body>
</html>
codice
codice:
Option Strict On
Partial Class prove_Calendario_squadre_calcio
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
'vettore squadre: devono essere in numero pari
Dim Squadre As String() = {"A", "B", "C", "D", "E", "F"} ', "G", "H", "I", "J"}
Dim n As Integer = Squadre.Length
If ((n Mod 2) <> 0) Then
PrintLn("Il numero delle squadre deve essere pari")
Exit Sub
End If
'numero di giornate di gioco nel girone di andata
Dim m As Integer = n - 1
'numero di incontri simultanei in ogni giornata
Dim ic As Integer = n \ 2
Dim h As Integer = n \ 2 - 1
'Lista delle giornate
Dim Giornate As New Generic.List(Of Generic.List(Of squadreType))
For g As Integer = 0 To m - 1
'lista degli incontri per giornata
Dim IncontriGiornata As New Generic.List(Of squadreType)
IncontriGiornata.Add(New squadreType(g, m))
For k As Integer = g + 1 To g + h
Dim a As Integer = k - m * CInt(Int(k / m))
Dim b As Integer = g + g - k
b = b - m * CInt(Int(b / m))
IncontriGiornata.Add(New squadreType(a, b))
Next
Giornate.Add(IncontriGiornata)
Next
Dim ng As Integer = 0
Dim arr(Giornate.Count - 1) As Integer
For i As Integer = 0 To arr.GetUpperBound(0)
arr(i) = i
Next
Dim sb As New StringBuilder()
Dim sbr As New StringBuilder()
sb.Append("
Andata</p>")
sbr.Append("
Ritorno</p>")
For Each i As Integer In New RandomIterator(arr)
ng += 1
sb.Append(String.Format("
Giornata {0}</p>", ng))
sbr.Append(String.Format("
Giornata {0}</p>", ng + m))
Dim gi As Generic.List(Of squadreType) = Giornate(i)
sb.Append("<ul>")
For Each st As squadreType In gi
sb.Append(String.Format("[*]{0} - {1}", Squadre(st.Casa), Squadre(st.FuoriCasa)))
sbr.Append(String.Format("[*]{1} - {0}", Squadre(st.Casa), Squadre(st.FuoriCasa)))
Next
sb.Append("[/list]")
sbr.Append("[/list]")
Next
Me.Literal1.Text = sb.ToString()
Me.Literal2.Text = sbr.ToString()
End Sub
End Class
Public Structure squadreType
Public Casa As Integer
Public FuoriCasa As Integer
Public Sub New(ByVal casa As Integer, ByVal fuoriCasa As Integer)
Me.Casa = casa
Me.FuoriCasa = fuoriCasa
End Sub
End Structure
Public Class RandomIterator
Implements IEnumerable
Private al As New ArrayList()
Public Sub New(ByVal ienum As IEnumerable)
For Each o As Object In ienum
al.Add(o)
Next
' mescolo gli elementi
Dim rand As New Random(CInt(DateTime.Now.Ticks And &H7FFFFFF))
For i As Integer = al.Count - 1 To 1 Step -1
' scambio elementi
Dim j As Integer = rand.Next(0, i)
Dim tmp As Object = al(i)
al(i) = al(j)
al(j) = tmp
Next
End Sub
Public Function GetEnumerator() As IEnumerator Implements IEnumerable.GetEnumerator
Return al.GetEnumerator()
End Function
End Class