none
Sorteo parejas RRS feed

  • Pregunta

  • Buscando por la red encontre el siguiente código en Access que resuelve una parte importante de la consulta que realizo, pero no me resuelve el hecho de no cruzar del mismo grupo. Este código resuelve enfrentar Hombres con mujeres, però en mi caso serian equipos que no pueden enfrentarse en la primera ronda, es decir si dispongo de tres equipos en el grupo A, no pueden enfrentarse con el mismo equipo en el grupo B, teniendo en cuenta que puede haber hasta cuatro equipos en cada grupo con un máximo de 20 grupos. Pego seguidamente el código haber si alguien se le ocurre como conseguir controlar que los cruces sean de Grupo distinto:


    Dim Rs As Recordset, NumReg As Long
    LI = 1 ' Límite Inferior
    LS = 24 ' Límite Superior
    NN = 24 ' Cantidad
    ReDim N(NN)
    ReDim NNombre(NN)

    Hombres = ""
    Mujeres = ""
    Y = ""
    Randomize
    Texto15.Visible = True
    Combinación.Visible = True
    Combinación = Val(Combinación & " ") + 1

    CICLO:
    NA = Int((LS - LI + 1) * Rnd + LI)
    C = C + 1
    Cc = C
    N(C) = NA
    If C > 1 Then
    For I = 1 To C - 1
    If N(C) = N(I) Then
    C = C - 1
    GoTo CICLO
    End If
    Next I
    End If
    If C = NN Then
    Set Rs = CurrentDb.OpenRecordset("Personas", dbOpenDynaset)
    Rs.MoveLast
    NumReg = Rs.RecordCount
    For I = 0 To NumReg - 1
    Rs.AbsolutePosition = I
    NNombre(N(I + 1)) = Rs("[Nombre]") & Rs("[Sexo]")
    Next I
    Rs.Close
    For I = 1 To 24
    If Right(NNombre(I), 1) = "H" Then
    Hombres = Hombres & Left(NNombre(I), Len(NNombre(I)) - 1) & vbCrLf
    Else
    Mujeres = Mujeres & Left(NNombre(I), Len(NNombre(I)) - 1) & vbCrLf
    End If
    If I < 13 Then Y = Y & "y" & vbCrLf
    Next I

    Else
    GoTo CICLO
    End If

    Ejemplo: Puedo tener 50 o 60 equipos de estos cada 4 o 5 equipos estarán en un grupo A, B, C.... etc. En el sorteo no puede unirse dos del mismo equipo. Supongamos que tenemos:

    Grupo A                 Grupo B                  Grupo C 

    A1                             B1                              C1 

    A2                             B2                               C2

    A3                             B3                               C3 

    A4                             B4                               C4 

    Un sorteo aleatorio podría ser:

    A1 - B2

    C1 - B3 

    B4 - A2 

    B1  - C4

    A3 - C2 

    A4  - C3 

    El tema está  en evitar que se encuentren en primera ronda los 1, los 2, etc.

    Gracias por la colaboración. 

    sábado, 13 de diciembre de 2014 19:39