algoritmo para combinar parejas

Iniciado por diego_lp, 7 Abril 2011, 20:50 PM

0 Miembros y 1 Visitante están viendo este tema.

diego_lp

Hola a todos,
estoy desde hacer ya como 3 horas tratando de escribir un código que me combine un par de números y no logro hacerlo de forma correcta, ya eh probado con arrays, matrices, no logro hacer que funcione correctamente.
El problema que quiero resolver es el siguiente:
Tengo 5 equipos, y quiero armar un fixture de todos contra todos, al ser 5 equipos son 2 partidos por fase y uno queda libre, y cada equipo no puede jugar mas de un partido por fase.
Espero que alguien me pueda dar una mano.
Muchas gracias.
Saludos.
Los programadores hicimos un pacto con Dios, él no hace sistemas y nosotros no hacemos milagros!

Edu

Bueno yo no entendi bien q quieres hacer, porq primero dices "todos contra todos" y despues decis q son 2 partidos por fase y uno queda libre, y entonces seria como una copa ahi pero en el todos contra todos no.

seba123neo

Hola, fijate si este ejemplo te ayuda en algo...

Código (vbnet) [Seleccionar]
Imports System.Text

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim vCantidadEquipos As Integer = 5

        Dim vTotalFechas As Integer = vCantidadEquipos - 1
        Dim vPartidosPorFecha As Integer = vCantidadEquipos \ 2

        Dim vFechas As String()() = New String(vTotalFechas - 1)() {}

        For vFecha As Integer = 0 To vTotalFechas - 1
            vFechas(vFecha) = New String(vPartidosPorFecha - 1) {}
        Next

        For vFecha As Integer = 0 To vTotalFechas - 1
            For vPartido As Integer = 0 To vPartidosPorFecha - 1
                Dim vLocal As Integer = (vFecha + vPartido) Mod (vCantidadEquipos - 1)
                Dim vVisitante As Integer = (vCantidadEquipos - 1 - vPartido + vFecha) Mod (vCantidadEquipos - 1)

                If vPartido = 0 Then
                    vVisitante = vCantidadEquipos - 1
                End If

                vFechas(vFecha)(vPartido) = (vLocal + 1) & " v " & (vVisitante + 1)
            Next
        Next

        Dim vLista As New StringBuilder()

        For i As Integer = 0 To vFechas.Length - 1

            vLista.Length = 0
            Debug.WriteLine("Fecha: " & (i + 1))
            Array.Sort(vFechas(i))

            For outer As Integer = 0 To vPartidosPorFecha - 1
                vLista.Append(vFechas(i)(outer) & ", ")
            Next

            vLista.Length = vLista.Length - 2
            Debug.WriteLine(vLista.ToString())
            Debug.WriteLine("")
        Next
    End Sub
End Class


saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson