Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: luis456 en 28 Junio 2014, 18:06 PM

Título: Combinaciones numericas por posicion con numeros guias
Publicado por: luis456 en 28 Junio 2014, 18:06 PM
Hola a todos hace tiempo que no entraba debido a motivos de salud pero ya estamos dando querrá de nuevo :)

Después de estar buscando mucho he encontrado esta forma de combinar numeros, según esto es para la lotería primitiva y se basa en algo llamado la rueda ?

bien la pregunta especifica es la siguiente.

tengo un form donde introduzco estos numeros guías mediante unos textbox (eso esta chupado jejej) lo que por supuesto no tengo idea es que me genere los numeros
como el ejemplo que pongo y me los muestre en un lixtbox.

Para 50 Números En 80 Combinaciones

Números guías: 01-02-03-04-05-06-07-08-09-10-11-12-13-14-15
16-17-18-19-20-21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36-37-38-39-40-
41-42-43-44-45-46-47-48-49-50


01) 1 2 12 14 16 37
02) 1 3 13 22 25 38
03) 1 4 15 29 39 49
04) 1 5 19 39 41 46
05) 1 6 14 19 23 41
06) 1 6 17 26 40 47
07) 1 7 18 19 27 41
08) 1 8 10 11 23 43
09) 1 28 30 33 34 35
10) 2 4 6 7 44 50
11) 2 8 13 15 33 42
12) 2 8 31 35 47 48
13) 2 9 20 21 25 46
14) 2 10 18 24 38 47
15) 2 11 13 27 28 46
16) 2 14 17 22 29 33
17) 2 15 25 31 32 33
18) 2 30 32 36 39 45
19) 3 4 28 40 43 45
20) 3 5 21 29 42 48
21) 3 7 30 31 43 46
22) 3 8 12 17 20 39
23) 3 9 22 28 36 40
24) 3 10 12 28 40 44
25) 3 14 24 35 41 49
26) 3 15 23 34 36 47
27) 4 5 16 20 24 32
28) 4 9 17 34 41 48
29) 4 9 22 43 44 45
30) 4 10 12 22 36 43
31) 4 14 19 25 30 47
32) 4 26 31 38 39 42
33) 5 6 7 14 39 46
34) 5 6 18 23 27 39
35) 5 7 8 25 45 49
36) 5 7 17 35 36 37
37) 5 10 13 14 31 50
38) 5 12 27 33 38 43
39) 6 8 24 26 36 46
40) 6 10 21 33 37 41
41) 6 11 12 15 19 35
42) 6 12 25 28 29 48
43) 6 16 22 31 34 49
44) 7 11 22 26 32 41
45) 7 12 13 21 23 24
46) 7 14 18 23 27 46
47) 7 20 28 42 43 47
48) 8 13 25 31 32 42
49) 8 14 21 27 32 44
50) 8 16 19 28 38 48
51) 9 10 12 36 44 45
52) 9 10 15 16 27 30
53) 9 11 14 39 40 42
54) 9 18 29 32 43 50
55) 9 19 23 26 33 49
56) 10 14 26 34 45 48
57) 10 19 20 36 42 49
58) 11 16 18 33 36 44
59) 11 17 21 30 38 49
60) 11 20 29 30 34 37
61) 11 21 26 30 37 50
62) 13 15 33 35 47 48
63) 13 16 29 41 45 47
64) 13 18 26 35 43 44
65) 13 19 32 34 37 40
66) 15 17 18 21 28 45
67) 15 37 44 46 48 49
68) 16 23 29 35 40 46
69) 16 24 25 34 39 43
70) 17 19 24 29 31 44
71) 17 20 34 38 49 50
72) 17 26 29 37 38 49
73) 18 20 22 30 40 48
74) 20 21 26 29 34 50
75) 20 27 31 35 37 45
76) 22 23 28 37 39 50
77) 22 24 42 45 46 50
78) 23 30 38 41 42 44
79) 25 27 36 40 41 50
80) 25 32 35 42 47 48


Gracias de antemano

Luis
Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: engel lex en 28 Junio 2014, 18:24 PM
pienso que la manera más facil es:

colocar los números ingresados en un array, por cada combinación a crear, haces un for con tantos ciclos como números en la combinación y dentro de el un random de 0 al largo del array, de manera que escoja valores del array, organizas los números obtenidos por el random, te aseguras que no haya repetidos y listo, luego te aseguras que no hagan combinaciones repetidas y listo completo :P
Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: luis456 en 29 Junio 2014, 05:59 AM
Cita de: engel lex en 28 Junio 2014, 18:24 PM
pienso que la manera más facil es:

colocar los números ingresados en un array, por cada combinación a crear, haces un for con tantos ciclos como números en la combinación y dentro de el un random de 0 al largo del array, de manera que escoja valores del array, organizas los números obtenidos por el random, te aseguras que no haya repetidos y listo, luego te aseguras que no hagan combinaciones repetidas y listo completo :P


Hola :)

Gracias por tu respuesta tan pronto me dejas enredado yo pensaba en hacer coincidir los textbos uno por uno :) ya que los numeros quías cambian eso del 1 al 50 es para el ejemplo ya que pueden empezar con cualquier numero.pero tienen que quedar en el orden que da el ejemplo
esto es lo que llevo hasta el momento



Código (vbnet) [Seleccionar]
Public Class Form1
    Dim maximum As Short = 99
    Dim Número As Double
    Private TextBoxes As TextBox() = {Nothing}
    Private Result1 As Int32(), Result2 As Int32(), Result3 As Int32(), Result4 As Int32(), Result5 As Int32(), Result6 As Int32(), Result7 As Int32(), Result8 As Int32(), Result9 As Int32(), Result10 As Int32(), Result11 As Int32(), Result12 As Int32(), Result13 As Int32(), Result14 As Int32(), Result15 As Int32(), Result16 As Int32(), Result17 As Int32(), Result18 As Int32(), Result19 As Int32(), Result20 As Int32()
    Private _textBox As Object
    Private Property ListBox1Count As Integer
    ReadOnly MAX As Integer = 99
 
   
     l


Public Sub solonumeros(ByRef e As System.Windows.Forms.KeyPressEventArgs)
        ' evitar letras
        If Char.IsDigit(e.KeyChar) Then
            e.Handled = False
        ElseIf Char.IsControl(e.KeyChar) Then
            e.Handled = False
        ElseIf Char.IsSeparator(e.KeyChar) Then
            e.Handled = False
        Else
            e.Handled = True
        End If

    End Sub


' Elimino duplicados al mismo tiempo que selecciono los números inferiores a MAX.
        Dim Resultss As IEnumerable(Of Integer) =
            (
                From Value As Integer
                In (Result1.Concat(Result2).Concat(Result3).Concat(Result4).Concat(Result5).Concat(Result6).Concat(Result7).Concat(Result8).Concat(Result9).Concat(Result10).Concat(Result11).Concat(Result12).Concat(Result13).Concat(Result14).Concat(Result15).Concat(Result16).Concat(Result17).Concat(Result18).Concat(Result19).Concat(Result20)).Distinct
                Where Value <= MAX
            )


' concateno todos y muestro en un listbox

Dim Rand288 As New Random

        Dim Result288 As IEnumerable(Of Integer) =
            (Result1.Concat(Result2).Concat(Result3).Concat(Result4).Concat(Result5).Concat(Result6).Concat(Result7).Concat(Result8).Concat(Result9).Concat(Result10).Concat(Result11).Concat(Result12).Concat(Result13).Concat(Result14).Concat(Result15).Concat(Result16).Concat(Result17).Concat(Result18).Concat(Result19).Concat(Result20).
        Distinct.
        Select(Function(Value As Integer)
                   Return If(Value < MAX, Value, Rand.Next(0, MAX))
               End Function))
        ListBox12.Items.AddRange(Result288.Cast(Of Object).ToArray)



  End Sub
End Class




Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: engel lex en 29 Junio 2014, 08:52 AM
me parece que aún no has aprendido a usar arrays (arreglos) te recomiendo estúdiate un tutorial, es simple y verás como te facilita la vida de inmediato XD
Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: luis456 en 29 Junio 2014, 11:04 AM
Cita de: engel lex en 29 Junio 2014, 08:52 AM
me parece que aún no has aprendido a usar arrays (arreglos) te recomiendo estúdiate un tutorial, es simple y verás como te facilita la vida de inmediato XD

Gracias de nuevo lo que creo es dificil de hacer ya que con 10 horas de curro al dia como mecánico y 54 años se me hace cuesta arriba :) lo que me gustaría saber es como hacerlo sin tantas pegas ya que esto es una aficcion y no trabajo y de paso me acostumbre a programar a pie ,escribir montón de código jejej

te agradezco tu interés de verdad

Luis
Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: Slava_TZD en 29 Junio 2014, 15:57 PM
No entiendo muy bien lo de las 80 combinaciones, es decir, según entiendo, se han de generar X combinaciones a partir de los números 1..50 y éstas nunca deben ser iguales y deben abarcar la mayor parte de combinaciones...ejemplo:

1 2 3 21 31 35
1 2 3 21 31 36
1 2 3 21 31 37
1 2 3 21 31 38
1 2 3 21 31 39
1 2 3 21 31 40
1 2 3 21 31 41
1 2 3 21 31 42
1 2 3 21 31 43
1 2 3 21 31 44
1 2 3 21 31 45
1 2 3 21 31 46
1 2 3 21 31 47


La cosa es, si el número 'límite' de combinaciones es X, ¿como se han se elegir las combinaciones exactamente? es decir, que criterio debe seguir la función que genera números para saltar por ejemplo de 1-8-10-11-23-43 a 1-28-30-33-34-35.
Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: luis456 en 29 Junio 2014, 17:10 PM
Bueno puede ser que no haya sabido explicar el problema ya que no son combinaciones como tal,es solamente acomodar los numeros en las posiciones
que da la rueda, los numeros guias son para que debajo de ellos se pongan los numeros que uno quiere :tomare solo unos cuantos

Números guías  :  01-02-03-04-05-06-07-08-09-10-11-12-13-14-15-16-17-18-19-20-21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36-37-38-39-40

numeros propios:  10-15-18-19-22-24-36-38-39-40-41-43-44-47-50-54-56-61-63-68-68-70-71-73-75-76-77-78-79-80-81-83-84-86-87-88-59-90-91-92


numeros guías

01) 1 2 12 14 16 37
02) 1 3 13 22 25 38

y el resultado seria tomando nuestros numeros

01) 10-15-43-47-54-59
02) 10-18-44-70-75-90

Como se ve los numeros que uno pongan se ponen en en el orden que se da en los numeros guías,(hasta yo me enredo jejej)
Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: Eleкtro en 29 Junio 2014, 19:47 PM
Cita de: Tzhed\ Kyperf/ en 29 Junio 2014, 15:57 PM
La cosa es, si el número 'límite' de combinaciones es X, ¿como se han se elegir las combinaciones exactamente? es decir, que criterio debe seguir la función que genera números para saltar por ejemplo de 1-8-10-11-23-43 a 1-28-30-33-34-35.

Buena pregunta, siempre me ha traido de cabeza este problema del compañero @Luis xD.

A ver si hoy es el dia en que resuelvo lo que precisas ;):

Output:

01 | 02 | 09 | 27 | 33 | 49
---------------------------
01 | 03 | 09 | 20 | 33 | 45
---------------------------
01 | 07 | 08 | 13 | 36 | 42
---------------------------
01 | 07 | 08 | 18 | 19 | 35
---------------------------
01 | 07 | 14 | 16 | 36 | 48
---------------------------
01 | 07 | 24 | 28 | 33 | 47
---------------------------
01 | 09 | 11 | 13 | 28 | 46
---------------------------
01 | 11 | 15 | 19 | 21 | 34
---------------------------
02 | 03 | 13 | 40 | 49 | 50
---------------------------
02 | 06 | 10 | 30 | 36 | 45
---------------------------
02 | 12 | 23 | 30 | 40 | 44
---------------------------
02 | 21 | 25 | 30 | 38 | 45
---------------------------
03 | 04 | 05 | 06 | 38 | 46
---------------------------
03 | 04 | 08 | 24 | 28 | 44
---------------------------
03 | 06 | 12 | 18 | 30 | 49
---------------------------
03 | 07 | 25 | 27 | 32 | 45
---------------------------
03 | 10 | 22 | 40 | 44 | 50
---------------------------
03 | 11 | 25 | 26 | 29 | 33
---------------------------
03 | 12 | 25 | 34 | 35 | 36
---------------------------
03 | 13 | 23 | 31 | 36 | 50
---------------------------
03 | 17 | 19 | 43 | 44 | 46
---------------------------
03 | 21 | 24 | 29 | 31 | 48
---------------------------
04 | 05 | 13 | 25 | 37 | 46
---------------------------
04 | 07 | 19 | 24 | 33 | 40
---------------------------
04 | 09 | 13 | 29 | 32 | 40
---------------------------
04 | 17 | 23 | 37 | 39 | 45
---------------------------
04 | 25 | 28 | 35 | 36 | 41
---------------------------
05 | 07 | 14 | 18 | 20 | 38
---------------------------
05 | 09 | 20 | 25 | 29 | 35
---------------------------
05 | 13 | 21 | 29 | 38 | 50
---------------------------
05 | 15 | 16 | 21 | 37 | 43
---------------------------
05 | 15 | 20 | 22 | 26 | 29
---------------------------
05 | 19 | 21 | 39 | 41 | 46
---------------------------
06 | 07 | 13 | 15 | 20 | 44
---------------------------
06 | 08 | 27 | 28 | 31 | 39
---------------------------
06 | 09 | 22 | 23 | 37 | 42
---------------------------
06 | 09 | 23 | 36 | 40 | 47
---------------------------
06 | 12 | 23 | 29 | 35 | 47
---------------------------
07 | 08 | 26 | 31 | 40 | 41
---------------------------
07 | 11 | 14 | 37 | 38 | 45
---------------------------
07 | 11 | 15 | 19 | 23 | 36
---------------------------
07 | 11 | 18 | 27 | 44 | 46
---------------------------
07 | 13 | 18 | 30 | 31 | 38
---------------------------
08 | 12 | 17 | 26 | 48 | 49
---------------------------
08 | 23 | 24 | 25 | 32 | 47
---------------------------
08 | 26 | 28 | 37 | 39 | 44
---------------------------
09 | 10 | 14 | 22 | 33 | 49
---------------------------
09 | 11 | 18 | 19 | 38 | 40
---------------------------
09 | 11 | 18 | 21 | 38 | 48
---------------------------
09 | 13 | 20 | 29 | 37 | 45
---------------------------
09 | 13 | 22 | 30 | 37 | 43
---------------------------
09 | 14 | 15 | 27 | 44 | 45
---------------------------
10 | 20 | 37 | 39 | 41 | 49
---------------------------
11 | 13 | 20 | 22 | 24 | 49
---------------------------
11 | 14 | 16 | 23 | 45 | 48
---------------------------
11 | 17 | 19 | 21 | 25 | 45
---------------------------
12 | 13 | 23 | 24 | 32 | 48
---------------------------
12 | 19 | 24 | 37 | 38 | 42
---------------------------
12 | 25 | 29 | 30 | 44 | 46
---------------------------
13 | 14 | 19 | 24 | 34 | 40
---------------------------
13 | 16 | 21 | 29 | 33 | 40
---------------------------
13 | 22 | 23 | 29 | 35 | 49
---------------------------
14 | 15 | 27 | 30 | 33 | 41
---------------------------
14 | 18 | 23 | 42 | 45 | 47
---------------------------
14 | 21 | 27 | 39 | 43 | 47
---------------------------
15 | 19 | 28 | 31 | 38 | 40
---------------------------
15 | 20 | 27 | 35 | 42 | 45
---------------------------
16 | 18 | 21 | 30 | 49 | 50
---------------------------
16 | 23 | 24 | 38 | 45 | 48
---------------------------
19 | 30 | 42 | 43 | 44 | 49
---------------------------
20 | 22 | 26 | 33 | 40 | 41
---------------------------
21 | 29 | 31 | 38 | 47 | 48
---------------------------
22 | 29 | 31 | 34 | 45 | 47
---------------------------
23 | 26 | 29 | 31 | 35 | 38
---------------------------
23 | 28 | 30 | 33 | 39 | 50
---------------------------
23 | 36 | 43 | 44 | 46 | 49
---------------------------
24 | 28 | 35 | 37 | 45 | 48
---------------------------
25 | 31 | 35 | 37 | 39 | 46
---------------------------
28 | 30 | 36 | 43 | 48 | 50
---------------------------


Código:
(Copiar, pegar, y compilar)
Código (vbnet) [Seleccionar]
Public Class ComboTest : Inherits Form

#Region " Objects, Vars "

    ' La Class "Random", es necesaria para desordenar una colección
    ' y esta declaración tiene que ir siempre fuera de cualquier Sub.
    Private ComboRandomizer As New Random

    ' El control que creo en tiempo de ejecución, donde mostraré las combinaciones.
    Private rtb As New RichTextBox With
            {
              .Dock = DockStyle.Fill,
              .Font = New Font("Lucida Console", 10.0F)
            }

    ' Una "palanca" para habilitar/deshabilitar el bloque de depuración.
    Private EnableDebug As Boolean = False

    ' Instancio una lista donde iremos guardando cada combinación obtenida.
    Private Combos As New List(Of Integer())

    ' Otra lista donde le daré el formato deseado a los números.
    Dim ComboStrings As List(Of String) = Nothing

    ' El máximo de combinaciones.
    Private Property MaxCombos As Integer = 80I

    ' El máximo de longitud para cada combinación.
    Private Property MaxComboLength As Integer = 6I

    ' Los números "guías" que usaremos para rellenar cada combinación.
    Private ReadOnly Numbers As Integer() =
        (From n As Integer In
         ("01-02-03-04-05-06-07-08-09-10-11-12-13-14-15-16-17-18-19-20-" &
          "21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36-37-38-39-40-" &
          "41-42-43-44-45-46-47-48-49-50"
         ).Split({"-"}, StringSplitOptions.RemoveEmptyEntries)).ToArray

#End Region

#Region " Constructors "

        ' De este Sub no hagas caso, es el constructor del Form.
    Public Sub New()

        ' This call is required by the designer.
        ' Add any initialization after the InitializeComponent() call.
        InitializeComponent()

        ' Añado el control al Form.
        Me.Controls.Add(rtb)

    End Sub

#End Region

#Region " Event-Handlers "

    Private Sub ComboTest() Handles MyBase.Load

        Me.DoCombos()
        Me.PrintCombos()

    End Sub

#End Region

#Region " Methods "

    ' La función que se encarga de desordenar y devolverte una combinación.
    ' By Elektro.
    Friend Function GetRandomCombination(Of T)([Collection] As IEnumerable(Of T),
                                               [Length] As Integer) As IEnumerable(Of T)

        Return (From Item As T In [Collection] Order By ComboRandomizer.Next Take [Length]).ToArray

    End Function

    Private Sub DoCombos()

        ' Añadir combinaciones a la lista, hasta que la lista tenga 'MaxComboLength' (80) elementos.
        Do Until Combos.Count = (MaxCombos - 1)

            ' Obtengo una combinación.
            Dim tmpCombo As Integer() = Me.GetRandomCombination(Of Integer)(Numbers, MaxComboLength)

            ' Ordeno los elementos de la combinación, de menos a mayor.
            Array.Sort(tmpCombo)

            ' Añado la combinación a la lista.
            Combos.Add(tmpCombo)

        Loop

        ' Ordeno los elementos de la lista, basandome en el orden de los elementos de cada Array.
        ' NOTA: Puede tener fallos al ordenar, no aseguro que el orden sea perfecto.
        Combos = (From Combo As Integer() In Combos Order By Convert.ToDecimal(String.Join("", Combo)) Ascending).ToList
        Combos = (From Combo As Integer() In Combos Order By Combo.First Ascending).ToList

        ' Además, creo utra lista Strings, para darle formato a cada combo numérico,
        ' y añadirle así un "0" a los números del "1" al "9" y que quede más bonito en la previsualización xD.
        Me.ComboStrings =
            (From Combo In Combos
             Select (String.Join(" | ", From Value As String In Combo
                                       Select If(Value.Length = 1, "0" & Value, Value)))).ToList

#If DEBUG Then

        ' El bloque de depuración.
        ' Este bloque entero es para testear el formato que le quieras dar.
        If Me.EnableDebug Then

            Dim sb As New System.Text.StringBuilder

            With sb

                For Index As Integer = 0 To (MaxCombos - 1)

                    sb.AppendLine(String.Format("Combo sin formato:"))
                    sb.AppendLine(String.Join(", ", Combos(Index)))
                    sb.AppendLine()
                    sb.AppendLine(String.Format("Combo con formato:"))
                    sb.AppendLine(String.Join(", ", ComboStrings(Index)))

                    MessageBox.Show(sb.ToString, "", MessageBoxButtons.OK, MessageBoxIcon.Information)

                    sb.Clear()

                Next Index

            End With

        End If

#End If

    End Sub

    Private Sub PrintCombos()

        ' Muestro los Combos en el control.
        With Me.rtb

            .SuspendLayout()
            For Each Combo As String In Me.ComboStrings
                .AppendText(Combo)
                .AppendText(Environment.NewLine & New String("-", Combo.Length) & Environment.NewLine)
            Next Combo
            .ResumeLayout()

            .Select(0, 0)

        End With

    End Sub

#End Region

End Class


PD: ¿Era eso lo que querías o tampoco? xD.

Saludos
Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: luis456 en 30 Junio 2014, 05:51 AM
Si combina bien :) pero , pero, ya sabes Elektro  siempre hay un pero, jeje, los numeros guías son para posicionar los numeros que hay que introducir manualmente esos numeros no son los que se van a combinar :) si no los que se introduzcan mediante unos texbosex.

fíjate como se ordenan los numeros mediante los numeros guías


Números guías  :  01-02-03-04-05-06-07-08-09-10-11-12-13-14-15-16-17-18-19-20-21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36-37-38-39-40

numeros propios:  10-15-18-19-22-24-36-38-39-40-41-43-44-47-50-54-56-61-63-68-68-70-71-73-75-76-77-78-79-80-81-83-84-86-87-88-59-90-91-92 < estos son los que se introducen a mano


los numeros que yo introduzco se tienen que ordenar según  estos numeros

numeros guías para tomar el orden fíjate que la combinación 01)  se ordena 1, 2 salta al 14 y hace saltos al 16 y así sucesivamente

01) 1 2 12 14 16 37 <---ordenar mis numeros en este orden o posiciones guias
02) 1 3 13 22 25 38

y el resultado seria tomando (acá usamos mis numeros)  y los ordenamos como están ordenados las combinaciones guías
es estos el orden es igual a la combinación 01 pero numeros diferentes, el 10 esta en la posición del 1, el 15 en la del dos el 43 hace el salto a la posición 14 y a si igual como lo hacen las combinaciones guías

01) 10-15-43-47-54-59
02) 10-18-44-70-75-90


Gracias por tu tiempo :)  y sobre todo Paciencia jejej

Luis




Título: Re:
Publicado por: Slava_TZD en 30 Junio 2014, 09:16 AM
Igual es xq estoy acabado de levantar, pero no entiendo nada xddd

Hay algun sitio donde se pueda consultar esa 'forma' de generar numeros y su itilidad?
Título: Re:
Publicado por: luis456 en 30 Junio 2014, 20:15 PM
Cita de: Tzhed\ Kyperf/ en 30 Junio 2014, 09:16 AM
Igual es xq estoy acabado de levantar, pero no entiendo nada xddd

Hay algun sitio donde se pueda consultar esa 'forma' de generar numeros y su itilidad?

Bien util para los que les guste las loterías :) y para quienes buscamos claves numéricas diferentes porque ya sabemos que con un generador genérico de combinaciones numéricas se producen la hostia de combinaciones pero predecibles :)


Pongo el contenido de lo que me encontré para este proyecto



Para usar esta rueda: Imprime una copia de la impresora. Escribe tus números
debajo de mis números guías, úsalos como usarías una rueda de códigos infantil
para cambiar los números por los míos en las combinaciones debajo. Esto es una
rueda cargada, entonces si clasificas tus números de mejor a peor, entonces
coloca de primero las mejores opciones en la rueda yendo de izquierda a derecha.

Números guías: 01-02-03-04-05-06-07-08-09-10-11-12-13-14-15-16-17-18-19-20-
21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36-37-38-39-40-41-42-43-44-45-
46-47-48-49

01)...01-02-03-04-05-06. . 02)...01-02-03-07-08-09. . 03)...01-04-09-10-11-12
04)...01-05-17-29-41-49. . 05)...01-06-13-20-30-43. . 06)...01-08-19-26-33-44
07)...01-10-22-31-36-39. . 08)...01-11-14-28-42-47. . 09)...01-19-32-34-38-48
10)...02-04-18-30-42-49. . 11)...02-05-06-10-11-12. . 12)...02-07-16-20-31-41
13)...02-09-15-17-28-38. . 14)...02-13-22-29-33-40. . 15)...02-14-19-35-37-43
16)...02-21-26-32-39-45. . 17)...03-04-22-32-41-43. . 18)...03-05-19-25-31-42
19)...03-06-14-26-38-49. . 20)...03-07-08-10-11-12. . 21)...03-09-21-27-36-44
22)...03-11-17-20-33-39. . 23)...03-23-28-34-37-49. . 24)...04-05-06-07-08-09
25)...04-08-16-25-35-39. . 26)...04-10-17-34-40-47. . 27)...04-11-13-24-31-44
28)...04-12-21-29-38-46. . 29)...05-07-21-24-33-43. . 30)...05-10-13-18-28-46
31)...05-12-15-30-34-39. . 32)...05-15-20-26-35-40. . 33)...05-16-32-36-47-49
34)...06-07-15-25-36-45. . 35)...06-17-24-35-42-46. . 36)...06-18-21-34-41-48
37)...06-19-22-27-40-47. . 38)...07-09-14-30-32-40. . 39)...07-13-19-27-39-49
40)...07-22-28-35-38-44. . 41)...08-12-17-22-30-37. . 42)...08-14-23-36-41-46
43)...08-15-21-31-43-49. . 44)...08-20-24-27-38-45. . 45)...09-11-16-22-34-46
46)...09-12-13-25-41-49. . 47)...09-17-23-26-31-48. . 48)...09-18-24-29-37-47
49)...10-14-16-29-45-48. . 50)...10-19-24-30-33-41. . 51)...10-20-25-32-37-44
52)...11-15-27-33-37-48. . 53)...11-18-23-25-38-40. . 54)...12-16-26-27-42-43
55)...12-23-33-35-45-47. . 56)...12-24-28-36-40-48. . 57)...13-14-15-16-17-18
58)...13-14-15-19-20-21. . 59)...13-16-21-22-23-24. . 60)...14-17-18-22-23-24
61)...15-19-20-22-23-24. . 62)...15-23-29-32-42-44. . 63)...16-17-18-19-20-21
64)...25-26-27-28-29-30. . 65)...25-26-27-31-32-33. . 66)...25-28-33-34-35-36
67)...26-29-30-34-35-36. . 68)...27-31-32-34-35-36. . 69)...28-29-30-31-32-33
70)...37-38-39-40-41-42. . 71)...37-38-39-43-44-45. . 72)...37-40-45-46-47-48
73)...38-41-42-46-47-48. . 74)...39-43-44-46-47-48. . 75)...40-41-42-43-44-45

Para 50 Números En 80 Combinaciones
Poder de ganar premios
3 si 3 = 08.02%... 4 si 4 = 00.52%... 5 si 5 = 00.02%
3 si 4 = 29.18%... 4 si 5 = 02.50%... 5 si 6 = 00.13%
3 si 5 = 59.06%... 4 si 6 = 07.16%
3 si 6 = 84.30%



Luis

Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: Slava_TZD en 30 Junio 2014, 21:36 PM
Vale, y que es lo que debe de hacer el programa? ¿"Generar" las combinaciones guía? O basándose en las 75 que has puesto cambiar los números del usuario según diga la combinación guia?

Es decir, pongo un ejemplo simple, que es lo que debías haber hecho desde el principio...Tenemos:

A B C D
1 2 3 4


3 Combinaciones de 4:

A B C D
1 2 3 4
A B D C
1 2 4 3
A D B C
1 4 2 3


Debe el programa llevar A B D C...etc dentro? y simplemente sustituir según los números del usuario? Lo que sigo sin saber es cómo se generan las ruedas...¿Se coge simplemente un número(fijo para varias combinaciones) y luego el resto es random entre la guía?


Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: luis456 en 30 Junio 2014, 22:16 PM
Hola ya me mareo jejeje

es simplemente sustituir  los números de las combinaciones de la rueda por los que introduzca el usuario se supone que estos numeros van de menor a mayor. lo que todavia no logro entender es como se hacen estas combinaciones ,el codigo que hizo elektro funciona pero cambia las combinaciones cada ves que se ejecuta el codigo y se supone que con los mismos numeros deberian de ser siempre las mismas combinaciones.

Luis


Pondré ejemplo con menos numeros a ver si atinamos a saber como se hacen estas combis 

Para 9 Números en 3 Combinaciones

Poder de ganar premios
3 si 3 = 67.86%... 4 si 4 = 35.71%... 5 si 5 = 14.28%
3 si 4 = 100.0%... 4 si 5 = 100.0%... 5 si 6 = 67.86%
3 si 5 = 100.0%... 4 si 6 = 100.0%
3 si 6 = 100.0%

Para usar esta rueda: Imprime una copia de la impresora. Escribe tus números
debajo de mis números guías, úsalos como usarías una rueda de códigos infantil
para cambiar los números por los míos en las combinaciones debajo. Esto es una
rueda cargada, entonces si clasificas tus números de mejor a peor, entonces
coloca de primero las mejores opciones en la rueda yendo de izquierda a derecha.

Números guías: 01-02-03-04-05-06-07-08-09

01)...01-02-03-04-05-06. . 02)...01-02-03-07-08-09. . 03)...04-05-06-07-08-09

Para 12 Números en 6 Combinaciones
Poder de ganar premios
3 si 3 = 51.36%... 4 si 4 = 18.18%... 5 si 5 = 04.54%
3 si 4 = 95.15%... 4 si 5 = 63.64%... 5 si 6 = 24.02%
3 si 5 = 100.0%... 4 si 6 = 100.0%
3 si 6 = 100.0%

Para usar esta rueda: Imprime una copia de la impresora. Escribe tus números
debajo de mis números guías, úsalos como usarías una rueda de códigos infantil
para cambiar los números por los míos en las combinaciones debajo. Esto es una
rueda cargada, entonces si clasificas tus números de mejor a peor, entonces
coloca de primero las mejores opciones en la rueda yendo de izquierda a derecha.

Números guías: 01-02-03-04-05-06-07-08-09-10-11-12

01)...01-02-03-04-05-06. . 02)...01-02-03-07-08-09. . 03)...04-05-06-07-08-09
06)...01-04-09-10-11-12. . 04)...02-05-06-10-11-12. . 06)...03-07-08-10-11-12












Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: Slava_TZD en 30 Junio 2014, 22:48 PM
Solo para estar claro, algo como esto es lo que buscas? (aunque no está en .net se entiende)

Código (perl) [Seleccionar]
#Numeros que ha introducido el usuario, en este caso 1 2 3 4
%guia = ('A' => 1, 'B', => 2, 'C' => 3, 'D' => 4);

#Combinaciones predefinidas
@combinaciones = ('A-B-C-D', 'A-B-D-C', 'A-D-B-C');

foreach(@combinaciones) {
 s/(A|B|C|D)/$guia{$1}/g;
 say;
}


El output es este:

1-2-3-4
1-2-4-3
1-4-2-3


EDIT: Modificando un poco el código para que coincida con el ejemplo que has puesto antes:

CitarNúmeros guías: 01-02-03-04-05-06-07-08-09

01)...01-02-03-04-05-06. . 02)...01-02-03-07-08-09. . 03)...04-05-06-07-08-09

Suponiendo que los números del usuario sean 10..90, el output es el siguiente:

10-20-30-40-50-60
10-20-30-70-80-90
40-50-60-70-80-90


Si es eso lo que buscas, en realidad es muy simple, solo sustituir... Lo ideal sería, que en vez de llevar hardcodeadas las combinaciones, se pudiesen generar con una función (pero para eso hace falta saber como es que se hacen las combinaciones, además seguro que hay varios tipos de 'ruedas'), mas que nada porque en el primer mensaje hablas de 80 combinaciones, para meterlas todas en el código te vas a dejar los dedos...
Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: luis456 en 6 Julio 2014, 09:21 AM
Bueno todavía no doy como hacerlo :)

la cuestión esta en como hace los saltos para las combinaciones ???


numeros de la rueda
01)...01-02-03-04-05-06. .
02)...01-02-03-07-08-09. .
03)...04-05-06-07-08-09
04)...01-04-09-10-11-12. .
05)...02-05-06-10-11-12. .
06)...03-07-08-10-11-12


01-02-03-04-05-06-07-08-09-10-11-12 <---numeros guias

15-19-20-22-25-30-34-36-38-40-42-48 <---mis numeros


aca hice lo que explica el tema pero a mano ;(

01)...01-02-03-04-05-06<---numeros de la rueda
      15-19-20-22-25-30<---mis numeros

02)...01-02-03-07-08-09<---numeros de la rueda
      15-19-20-34-36-38<---mis numeros combinados segun la rueda

03)...04-05-06-07-08-09
      22-25-30-34-36-38

04)...01-04-09-10-11-12
      15-22-38-40-42-48

05)...02-05-06-10-11-12
      19-25-30-40-42-48

06)...03-07-08-10-11-12
      20-34-36-40-42-48


Buaaa

Luis
Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: Eleкtro en 6 Julio 2014, 10:01 AM
hmmm... por lo que me estoy dando cuenta, lo que llamas "números guias" son como un índice y cada índice está ligado a un número especifico

Es decir:
Index 1 = number 15
...
Index 6 = number 30
etc...

En ese caso puedes usar un objeto al que poder asignarle una llave y un valor, por ejemplo un Dictionary(Of Integer, Integer)  (http://msdn.microsoft.com/en-us/library/xfhwa508%28v=vs.110%29.aspx), y al acceder según el índice, se mostraría el número ligado.

Ejemplo (escrito al vuelo):
   Private ReadOnly NumberWheel As new Dictionary(of integer, integer) from
      { {1, 15}, {2, 19}, {3, 20}, {4, 22}, etc...}


Si estoy en lo correcto entonces repasate el código que posteé en la primera página (http://foro.elhacker.net/net/combinaciones_numericas_por_posicion_con_numeros_guias-t417414.0.html;msg1951776#msg1951776) de este hilo, creo que con estas modificaciones sería suficiente para obtener el resultado esperado:

1. Asignar un índice y sus valores ligados como en el ejemplo de arriba, en un Array, una Lista, un Diccionario, una Tupla, o como prefieras.
2. Desordenar el índice y hacer combinaciones con el índice, en lugar de desordenar los números ligados como yo hice.
+
3. Eliminar posibles duplicados en las combinaciones (se me olvidó hacerlo xD)

PD: Te lo modificaría yo, pero por el momento con el código anterior considero que ya me esmeré bastante, y que programes como "afición" no significa que no puedas intentar hacerle esas modificaciones por ti mismo, ¡muestranos algo tuyo!.

Saludos
Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: luis456 en 6 Julio 2014, 10:19 AM
Cita de: Eleкtro en  6 Julio 2014, 10:01 AM
hmmm... por lo que me estoy dando cuenta, lo que llamas "números guias" son como un índice y cada índice está ligado a un número especifico

Es decir:
Index 1 = number 15
...
Index 6 = number 30
etc...

Puedes usar un objeto al que poder asignarle una llave y un valor, por ejemplo un Dictionary(Of Integer, Integer)  (http://msdn.microsoft.com/en-us/library/xfhwa508%28v=vs.110%29.aspx), y al acceder según el índice, se mostraría el número ligado.

Ejemplo (escrito al vuelo):
   Private ReadOnly NumberWheel As new Dictionary(of integer, integer) from
      { {1, 15}, {2, 19}, {3, 20}, {4, 22}, etc...}


Luis, repasate el código que posteé en la primera página (http://foro.elhacker.net/net/combinaciones_numericas_por_posicion_con_numeros_guias-t417414.0.html;msg1951776#msg1951776) de este hilo, solo necesitarías hacerle unas pequeñas modificaciones:

Creo que con estas modificaciones sería suficiente para obtener el resultado esperado:

1. Asignar un índice y sus valores ligados como en el ejemplo de arriba, en un Array, una Lista, un Diccionario, una Tupla, o como prefieras.
2. Desordenar el índice y hacer combinaciones con el índice, en lugar de desordenar los números ligados como yo hice.
+
3. Eliminar posibles duplicados en las combinaciones (se me olvidó hacerlo xD)

PD: Te lo modificaría yo, pero por el momento con el código anterior considero que ya me esmeré bastante, y que programes como "afición" no significa que no puedas intentar hacerle esas modificaciones por ti mismo, ¡muestranos algo tuyo!.

Saludos


Si señor  :silbar: me esmerare en hacerlo ya tengo la una pista jejej, y gracias :)

Luis

Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: luis456 en 7 Julio 2014, 20:37 PM
Hola ahora si estoy mas loco todavia jejje tengo dos dias tratando de hacer lo que me dijo elektro y na,tambien no encuentro la logica ya que los numeros que introdusco son diferentes cada ves que nesecito hacer el procedimiento y recien me doy cuenta que creo que lo del indice que me dices no es con mis numeros si no la posición original de la rueda y esta no debe de cambiar solo la de mis numeros.

he tratado de hacerlo corto pero solo me da las mismas combinaciones ????


Código (vbnet) [Seleccionar]
Public Class ComboTest : Inherits Form

#Region " Objects, Vars "

   ' La Class "Random", es necesaria para desordenar una colección
   ' y esta declaración tiene que ir siempre fuera de cualquier Sub.
   Private ComboRandomizer As New Random

   ' El control que creo en tiempo de ejecución, donde mostraré las combinaciones.
   Private rtb As New RichTextBox With
           {
             .Dock = DockStyle.Fill,
             .Font = New Font("Lucida Console", 10.0F)
           }

   ' Una "palanca" para habilitar/deshabilitar el bloque de depuración.
   Private EnableDebug As Boolean = False

   ' Instancio una lista donde iremos guardando cada combinación obtenida.
   Private Combos As New List(Of Integer())


   ' enpesamos combis
   Private ReadOnly NumberWheel As New Dictionary(Of Integer, Integer) From
      {{1, 15}, {2, 19}, {3, 20}, {4, 22}, {5, 22}}

   ' Otra lista donde le daré el formato deseado a los números.
   Dim ComboStrings As List(Of String) = Nothing

   ' El máximo de combinaciones.
   Private Property MaxCombos As Integer = 50I

   ' El máximo de longitud para cada combinación.
   Private Property MaxComboLength As Integer = 11I

   ' Los números "guías" que usaremos para rellenar cada combinación.
   Private ReadOnly Numbers As Integer() =
       (From n As Integer In
        ("01-02-03-04-05-06" &
         ""
        ).Split({"-"}, StringSplitOptions.RemoveEmptyEntries)).ToArray

#End Region

#Region " Constructors "

   ' De este Sub no hagas caso, es el constructor del Form.
   Public Sub New()

       ' This call is required by the designer.
       ' Add any initialization after the InitializeComponent() call.  
       InitializeComponent()

       ' Añado el control al Form.
       Me.Controls.Add(rtb)

   End Sub

#End Region

#Region " Event-Handlers "

   Private Sub ComboTest() Handles MyBase.Load

       Me.DoCombos()
       Me.PrintCombos()

   End Sub

#End Region

#Region " Methods "

   ' La función que se encarga de desordenar y devolverte una combinación.
   ' By Elektro.
   Friend Function GetRandomCombination(Of T)(ByVal [NumberWheel] As IEnumerable(Of T),
                                              ByVal [Length] As Integer) As IEnumerable(Of T)

       Return (From Item As T In [NumberWheel] Order By ComboRandomizer.Next Take [Length]).ToArray

   End Function

   Private Sub DoCombos()

       ' Añadir combinaciones a la lista, hasta que la lista tenga 'MaxComboLength' (80) elementos.
       Do Until Combos.Count = (MaxCombos - 1)

           ' Obtengo una combinación.
           Dim tmpCombo As Integer() = Me.GetRandomCombination(Of Integer)(Numbers, MaxComboLength)

           ' Ordeno los elementos de la combinación, de menos a mayor.
           Array.Sort(tmpCombo)

           ' Añado la combinación a la lista.
           Combos.Add(tmpCombo)

       Loop

       ' Ordeno los elementos de la lista, basandome en el orden de los elementos de cada Array.
       ' NOTA: Puede tener fallos al ordenar, no aseguro que el orden sea perfecto.
       Combos = (From Combo As Integer() In Combos Order By Convert.ToDecimal(String.Join("", Combo)) Ascending).ToList
       Combos = (From Combo As Integer() In Combos Order By Combo.First Ascending).ToList

       ' Además, creo utra lista Strings, para darle formato a cada combo numérico,
       ' y añadirle así un "0" a los números del "1" al "9" y que quede más bonito en la previsualización xD.
       Me.ComboStrings =
           (From Combo In Combos
            Select (String.Join(" | ", From Value As String In Combo
                                      Select If(Value.Length = 1, "0" & Value, Value)))).ToList

#If DEBUG Then

       ' El bloque de depuración.
       ' Este bloque entero es para testear el formato que le quieras dar.
       If Me.EnableDebug Then

           Dim sb As New System.Text.StringBuilder

           With sb

               For Index As Integer = 0 To (MaxCombos - 1)

                   sb.AppendLine(String.Format("Combo sin formato:"))
                   sb.AppendLine(String.Join(", ", Combos(Index)))
                   sb.AppendLine()
                   sb.AppendLine(String.Format("Combo con formato:"))
                   sb.AppendLine(String.Join(", ", ComboStrings(Index)))

                   MessageBox.Show(sb.ToString, "", MessageBoxButtons.OK, MessageBoxIcon.Information)

                   sb.Clear()

               Next Index

           End With

       End If

#End If

   End Sub

   Private Sub PrintCombos()

       ' Muestro los Combos en el control.
       With Me.rtb

           .SuspendLayout()
           For Each Combo As String In Me.ComboStrings
               .AppendText(Combo)
               .AppendText(Environment.NewLine & New String("-", Combo.Length) & Environment.NewLine)
           Next Combo
           .ResumeLayout()

           .Select(0, 0)

       End With

   End Sub

#End Region

End Class



Te envie un privado elektro

gracias :)

Luis


Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: luis456 en 8 Julio 2014, 12:14 PM
He logrado esto :) todavia me falta grabar en txt y eliminar repetidos y meter los numeros a combinar manualmente :)

Código (vbnet) [Seleccionar]
Public Class ComboTest : Inherits Form

#Region " Objects, Vars "

   ' La Class "Random", es necesaria para desordenar una colección
   ' y esta declaración tiene que ir siempre fuera de cualquier Sub.
   Private ComboRandomizer As New Random

   ' El control que creo en tiempo de ejecución, donde mostraré las combinaciones.
   Private rtb As New RichTextBox With
           {
             .Dock = DockStyle.Fill,
             .Font = New Font("Lucida Console", 10.0F)
           }

   ' Una "palanca" para habilitar/deshabilitar el bloque de depuración.
   Private EnableDebug As Boolean = False

   ' Instancio una lista donde iremos guardando cada combinación obtenida.
   Private Combos As New List(Of Integer())


   ' enpesamos combis
   Private ReadOnly NumberWheel As New Dictionary(Of Integer, Integer) From
      {{1, 15}, {2, 19}, {3, 20}, {4, 22}, {5, 25}, {6, 30}} '<---- esto solo tengo que ir seguiendo la secuencia de la rueda :). tengo que eliminar las conbis  repetidas ????
   ' esto los he puesto a lo loco


   ' Otra lista donde le daré el formato deseado a los números.
   Dim ComboStrings As List(Of String) = Nothing

   ' El máximo de combinaciones.
   Private Property MaxCombos As Integer = 20I ' <---aca esta chupado.

   ' El máximo de longitud para cada combinación.
   Private Property MaxComboLength As Integer = 6I '<----- aca esta tambien chupado.

   ' Los números "guías" que usaremos para rellenar cada combinación. """"""  <-----aca estoy tratando de que estos numeros se introduscan manualmente
   ' ya que cambian a cada rato y no son los mismos
   Private ReadOnly Numbers As Integer() =
       (From n As Integer In
        ("01-02-03-04-05-06-07-12-18-22-44-48-55-69-99" &
         ""
        ).Split({"-"}, StringSplitOptions.RemoveEmptyEntries)).ToArray

#End Region

#Region " Constructors "

   ' De este Sub no hagas caso, es el constructor del Form.
   Public Sub New()

       ' This call is required by the designer.
       ' Add any initialization after the InitializeComponent() call.  
       InitializeComponent()

       ' Añado el control al Form.
       Me.Controls.Add(rtb)

   End Sub

#End Region

#Region " Event-Handlers "

   Private Sub ComboTest() Handles MyBase.Load

       Me.DoCombos()
       Me.PrintCombos()

   End Sub

#End Region

#Region " Methods "

   ' La función que se encarga de desordenar y devolverte una combinación.'<---- tengo que eliminar las conbis  repetidas ????
   ' By Elektro.
   Friend Function GetRandomCombination(Of T)(ByVal [NumberWheel] As IEnumerable(Of T),
                                              ByVal [Length] As Integer) As IEnumerable(Of T)

       Return (From Item As T In [NumberWheel] Order By ComboRandomizer.Next Take [Length]).ToArray

   End Function

   Private Sub DoCombos()

       ' Añadir combinaciones a la lista, hasta que la lista tenga 'MaxComboLength' (80) elementos.
       Do Until Combos.Count = (MaxCombos - 1)

           ' Obtengo una combinación.
           Dim tmpCombo As Integer() = Me.GetRandomCombination(Of Integer)(Numbers, MaxComboLength)

           ' Ordeno los elementos de la combinación, de menos a mayor.
           Array.Sort(tmpCombo)

           ' Añado la combinación a la lista.'<----y  grabar estas listas en un txt ????
           Combos.Add(tmpCombo)

       Loop

       ' Ordeno los elementos de la lista, basandome en el orden de los elementos de cada Array.
       ' NOTA: Puede tener fallos al ordenar, no aseguro que el orden sea perfecto.
       Combos = (From Combo As Integer() In Combos Order By Convert.ToDecimal(String.Join("", Combo)) Ascending).ToList
       Combos = (From Combo As Integer() In Combos Order By Combo.First Ascending).ToList

       ' Además, creo utra lista Strings, para darle formato a cada combo numérico,
       ' y añadirle así un "0" a los números del "1" al "9" y que quede más bonito en la previsualización xD.
       Me.ComboStrings =
           (From Combo In Combos
            Select (String.Join(" | ", From Value As String In Combo
                                      Select If(Value.Length = 1, "0" & Value, Value)))).ToList

#If DEBUG Then

       ' El bloque de depuración.
       ' Este bloque entero es para testear el formato que le quieras dar.
       If Me.EnableDebug Then

           Dim sb As New System.Text.StringBuilder

           With sb

               For Index As Integer = 0 To (MaxCombos - 1)

                   sb.AppendLine(String.Format("Combo sin formato:"))
                   sb.AppendLine(String.Join(", ", Combos(Index)))
                   sb.AppendLine()
                   sb.AppendLine(String.Format("Combo con formato:"))
                   sb.AppendLine(String.Join(", ", ComboStrings(Index)))

                   MessageBox.Show(sb.ToString, "", MessageBoxButtons.OK, MessageBoxIcon.Information)

                   sb.Clear()

               Next Index

           End With

       End If

#End If

   End Sub

   Private Sub PrintCombos()

       ' Muestro los Combos en el control.
       With Me.rtb

           .SuspendLayout()
           For Each Combo As String In Me.ComboStrings
               .AppendText(Combo)
               .AppendText(Environment.NewLine & New String("-", Combo.Length) & Environment.NewLine)
           Next Combo
           .ResumeLayout()

           .Select(0, 0)

       End With

   End Sub

#End Region

End Class



No funciona buaaa ya que las cambinaciones cambian cada ves que ejecuto el codigo y deberian de tomar el orden del indice y si los numeros introducidos no cambian no deberian de cambiar las combinciones
Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: Eleкtro en 12 Julio 2014, 11:14 AM
Como ya te expliqué sería mejor que te guiases por el código de antes y hacerle las modificaciones que resulten necesarias (lo digo por el nuevo post que has publicado con un código muy distinto), creo que tú entiendes mejor que yo el resultado que esperas obtener...

Mira a ver si es esto lo que quieres:

Establezco los números "guía" con sus números "asociados" (solo 20 guías), luego hago 80 combinaciones con los números "asociados" con una longitud de 6 números, y luego ordeno cada combinación de menor a mayor.
Si algo de lo que acabo de comentar no es correcto, intenta ser específico.

PD: Pueden darse combinaciones repetidas, pero una vez aclarado, en caso de que sea esto lo que buscas, entonces te diré como eliminar repetidas.

Código (vbnet) [Seleccionar]
Public Class ComboTest : Inherits Form

#Region " Objects, Vars "

   ' La Class "Random", es necesaria para desordenar una colección
   ' y esta declaración tiene que ir siempre fuera de cualquier Sub.
   Private ComboRandomizer As New Random

   ' El control que creo en tiempo de ejecución, donde mostraré las combinaciones.
   Private rtb As New RichTextBox With
           {
             .Dock = DockStyle.Fill,
             .Font = New Font("Lucida Console", 10.0F)
           }

   ' Una "palanca" para habilitar/deshabilitar el bloque de depuración.
   Private EnableDebug As Boolean = False

   ' Instancio una lista donde iremos guardando cada combinación obtenida.
   Private Combos As New List(Of Integer())

   ' Otra lista donde le daré el formato deseado a los números.
   Dim ComboStrings As List(Of String) = Nothing

   ' El máximo de combinaciones.
   Private Property MaxCombos As Integer = 80I

   ' El máximo de longitud para cada combinación.
   Private Property MaxComboLength As Integer = 6I

   ' Los números "guías" que usaremos para rellenar cada combinación.
   'Private ReadOnly Numbers As Integer() =
   '    (From n As Integer In
   '     ("01-02-03-04-05-06-07-08-09-10-11-12-13-14-15-16-17-18-19-20-" &
   '      "21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36-37-38-39-40-" &
   '      "41-42-43-44-45-46-47-48-49-50"
   '     ).Split({"-"}, StringSplitOptions.RemoveEmptyEntries)).ToArray

   ' Izquierda: Número "guía"
   ' Derecha: Número asociado
   Private ReadOnly NumberWheel As New Dictionary(Of Integer, Integer) From
     {
         {1, 21}, {2, 22}, {3, 23}, {4, 24}, {5, 25},
         {6, 26}, {7, 27}, {8, 28}, {9, 29}, {10, 30},
         {11, 31}, {12, 32}, {13, 33}, {14, 34}, {15, 35},
         {16, 36}, {17, 37}, {18, 38}, {19, 39}, {20, 40}
     }

#End Region

#Region " Constructors "

   ' De este Sub no hagas caso, es el constructor del Form.
   Public Sub New()

       ' This call is required by the designer.
       ' Add any initialization after the InitializeComponent() call.
       InitializeComponent()

       With Me
           ' Seteo algunas propiedades sin imortancia.
           .Size = New Point(320, 480)
           .StartPosition = FormStartPosition.CenterScreen
           ' Añado el control al Form.
           .Controls.Add(rtb)
       End With

   End Sub

#End Region

#Region " Event-Handlers "

   Private Sub ComboTest() Handles MyBase.Shown

       Me.DoCombos()
       Me.PrintCombos()

   End Sub

#End Region

#Region " Methods "

   ' La función que se encarga de desordenar y devolverte una combinación.
   ' By Elektro.
   'Friend Function GetRandomCombination(Of T)(ByVal [Collection] As IEnumerable(Of T),
   '                                          ByVal [Length] As Integer) As IEnumerable(Of T)

   '    Return (From Item As T In [Collection]
   '            Order By ComboRandomizer.Next
   '            Take [Length]).ToArray

   'End Function

   Friend Function GetRandomCombination(Of T)([Collection] As Dictionary(Of T, T),
                                              [Length] As Integer) As IEnumerable(Of T)

       Return (From Item As KeyValuePair(Of T, T) In [Collection]
               Select Item.Value
               Order By ComboRandomizer.Next
               Take [Length]).ToArray

   End Function

   Private Sub DoCombos()

       ' Añadir combinaciones a la lista, hasta que la lista tenga 'MaxComboLength' (80) elementos.
       Do Until Combos.Count = (MaxCombos - 1)

           ' Obtengo una combinación.
           Dim tmpCombo As Integer() = Me.GetRandomCombination(Of Integer)(NumberWheel, MaxComboLength)

           ' Ordeno los elementos de la combinación, de menos a mayor.
           Array.Sort(tmpCombo)

           ' Añado la combinación a la lista.
           Combos.Add(tmpCombo)

       Loop

       ' Ordeno los elementos de la lista, basandome en el orden de los elementos de cada Array.
       ' NOTA: Puede tener fallos al ordenar, no aseguro que el orden sea perfecto.
       Combos = (From Combo As Integer() In Combos Order By Convert.ToDecimal(String.Join("", Combo)) Ascending).ToList
       Combos = (From Combo As Integer() In Combos Order By Combo.First Ascending).ToList

       ' Además, creo utra lista Strings, para darle formato a cada combo numérico,
       ' y añadirle así un "0" a los números del "1" al "9" y que quede más bonito en la previsualización xD.
       Me.ComboStrings =
           (From Combo In Combos
            Select (String.Join(" | ", From Value As String In Combo
                                      Select If(Value.Length = 1, "0" & Value, Value)))).ToList

#If DEBUG Then

       ' El bloque de depuración.
       ' Este bloque entero es para testear el formato que le quieras dar.
       If Me.EnableDebug Then

           Dim sb As New System.Text.StringBuilder

           With sb

               For Index As Integer = 0 To (MaxCombos - 1)

                   sb.AppendLine(String.Format("Combo sin formato:"))
                   sb.AppendLine(String.Join(", ", Combos(Index)))
                   sb.AppendLine()
                   sb.AppendLine(String.Format("Combo con formato:"))
                   sb.AppendLine(String.Join(", ", ComboStrings(Index)))

                   MessageBox.Show(sb.ToString, "", MessageBoxButtons.OK, MessageBoxIcon.Information)

                   sb.Clear()

               Next Index

           End With

       End If

#End If

   End Sub

   Private Sub PrintCombos()

       ' Muestro los Combos en el control.
       With Me.rtb

           .SuspendLayout()
           For Each Combo As String In Me.ComboStrings
               .AppendText(Combo)
               .AppendText(Environment.NewLine & New String("-", Combo.Length) & Environment.NewLine)
           Next Combo
           .ResumeLayout()

           .Select(0, 0)

       End With

   End Sub

#End Region

End Class
Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: luis456 en 12 Julio 2014, 11:44 AM
Gracias elektro por tu paciencia

Puse un post donde explico un poco mejor el asunto me imagino que lo habrás leído :)

No se explicar bien el problema tratare de hacerlo mejor.

Primero en los códigos que me has mostrado pasa una cosa y es que cada ves que lo ejecuto cambian las combinaciones y deberían ser las mismas combinaciones siempre y cuando no se cambien los numeros introducidos por el usuario los numeros guías son para tomar las posiciones
de las combinaciones los numeros no son asociados ni no son para ver que posición toman en orden, ya que si pongo el de 10 de primero este toma la posición del 1 y si pongo el 20 de primero este hace lo mismo toma la posicion del 1  :)

Números  01-02-03-04-05-06-07-08-09-10-11-12-13-14
               
               01-02-03-04-05-06
               01-02-03-             07-08-09
               01-04-09-                             10-11-12
               01-          05-  07                   10         13-14
               01-            06-   08-                  11-12-13

                  02-03-04-        07-             10-          13

                  02-03-   05-                 09-    11-          14
                  02-    04-        08-                 11-       3-14
                  02-      05-06-                   10-11-12
                  03-         06-     09-                     12-13-14
                  03-            07-08-   1         10-11-12

                  03-            07-08-   10-11-12
                        04-05-06-07-08-09

Combinaciones de la rueda aquí esta la forma en como se combinan los numeros

01)...01-02-03-04-05-06.
02)...01-02-03-07-08-09. .
03)...01-04-09-10-11-12
04)...01-05-07-10-13-14. .
05)...01-06-08-11-12-13. .
06)...02-03-04-07-10-13
07)...02-03-05-09-11-14. .
08)...02-04-08-11-13-14. .
09)...02-05-06-10-11-12
10)...03-06-09-12-13-14. .
11)...03-07-08-10-11-12. .
12)...04-05-06-07-08-09


Números guías:   01-02-03-04-05-06-07-08-09-10-11-12-13-14

numeros usuario: 10 13 18 25 26 28 30 32 35 37 40 42 45 47<--este seria el imput

y esta la salida

10 13 18 25 26 28
10 13 18 30 32 35
10 25 35 37 40 42
10 26 30 37 45 47
10 28 32 40 42 45
13 18 25 30 37 45
13 18 26 35 40 47
13 25 32 40 45 47
13 26 28 37 42 45
18 28 35 42 45 47
18 30 32 37 42 45
25 26 28 30 32 35


Gracias por tu infinita paciencia

Luis
Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: luis456 en 26 Julio 2014, 09:54 AM
Bueno unos días después de estar fuera vuelvo al ataque jejej con el tema de las combinaciones e echo a pie este código, pero ya me perdí de tanto escribir pero es la idea de lo de las combinaciones mas  o menos lo que me gustaria es poder simplificarlo.

Código (vbnet) [Seleccionar]
Public Class Form1


    Dim maximum As Short = 99
    Dim Número As Double
    Private TextBoxes As TextBox() = {Nothing}


    Private r1 = 5
    Private r2 = 15
    Private r3 = 25
    Private r4 = 35
    Private r5 = 40
    Private r6 = 45

    Private ar1 = 6
    Private br2 = 10
    Private cr3 = 20
    Private dr4 = 30
    Private er5 = 40
    Private sr6 = 4



    Private _textBox As Object
    Private Property ListBox1Count As Integer
    ReadOnly MAX As Integer = 8
    Dim Result22 As Integer
    Dim Counter, Counter2 As Integer
    Dim myLabelArray(6) As Label
    Private Sub Limpiar_Cajas(ByVal f As Form)
        ' recorrer todos los controles del formulario indicado 
        For Each c As Control In f.Controls
            If TypeOf c Is TextBox Then
                c.Text = "" ' eliminar el texto 
            End If
        Next
    End Sub

    Private Sub Button4_Click( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button4.Click
        ' pasar el formulario 
        Call Limpiar_Cajas(Me)


    End Sub

   

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
        'funcion para introducir manualmente r1 = Val(TextBox1.Text)
    End Sub



    'funcion unir o formar combinaciones
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ListBox1.Items.Add(TextBox1.Text)
        ListBox1.Items.Add(TextBox6.Text)
        ListBox1.Items.Add(TextBox7.Text)
        ListBox1.Items.Add(TextBox8.Text)
        ListBox1.Items.Add(TextBox10.Text)
        ListBox1.Items.Add(TextBox12.Text)
        'funcion unir o formar combinaciones segundo lisb
        ListBox2.Items.Add(TextBox1.Text)
        ListBox2.Items.Add(TextBox2.Text)
        ListBox2.Items.Add(TextBox4.Text)
        ListBox2.Items.Add(TextBox31.Text)
        ListBox2.Items.Add(TextBox33.Text)
        ListBox2.Items.Add(TextBox36.Text)
        'funcion unir o formar combinaciones terce lisb
        ListBox3.Items.Add(TextBox1.Text)
        ListBox3.Items.Add(TextBox2.Text)
        ListBox3.Items.Add(TextBox4.Text)
        ListBox3.Items.Add(TextBox6.Text)
        ListBox3.Items.Add(TextBox7.Text)
        ListBox3.Items.Add(TextBox8.Text)
        'funcion unir o formar combinaciones cuarto lisb
        ListBox4.Items.Add(TextBox1.Text)
        ListBox4.Items.Add(TextBox2.Text)
        ListBox4.Items.Add(TextBox4.Text)
        ListBox4.Items.Add(TextBox13.Text)
        ListBox4.Items.Add(TextBox14.Text)
        ListBox4.Items.Add(TextBox15.Text)
        'funcion unir o formar combinaciones quinto lisb
        ListBox5.Items.Add(TextBox1.Text)
        ListBox5.Items.Add(TextBox5.Text)
        ListBox5.Items.Add(TextBox14.Text)
        ListBox5.Items.Add(TextBox15.Text)
        ListBox5.Items.Add(TextBox34.Text)
        ListBox5.Items.Add(TextBox35.Text)
        'funcion unir o formar combinaciones sesta lisb
        ListBox6.Items.Add(TextBox2.Text)
        ListBox6.Items.Add(TextBox5.Text)
        ListBox6.Items.Add(TextBox13.Text)
        ListBox6.Items.Add(TextBox14.Text)
        ListBox6.Items.Add(TextBox15.Text)
        ListBox6.Items.Add(TextBox33.Text)
        'funcion unir o formar combinaciones 7o lisb
        ListBox7.Items.Add(TextBox6.Text)
        ListBox7.Items.Add(TextBox5.Text)
        ListBox7.Items.Add(TextBox2.Text)
        ListBox7.Items.Add(TextBox10.Text)
        ListBox7.Items.Add(TextBox11.Text)
        ListBox7.Items.Add(TextBox18.Text)
        'funcion unir o formar combinaciones 8o lisb
        ListBox8.Items.Add(TextBox1.Text)
        ListBox8.Items.Add(TextBox3.Text)
        ListBox8.Items.Add(TextBox5.Text)
        ListBox8.Items.Add(TextBox19.Text)
        ListBox8.Items.Add(TextBox27.Text)
        ListBox8.Items.Add(TextBox29.Text)
        'funcion unir o formar combinaciones 9o lisb
        ListBox9.Items.Add(TextBox22.Text)
        ListBox9.Items.Add(TextBox25.Text)
        ListBox9.Items.Add(TextBox27.Text)
        ListBox9.Items.Add(TextBox30.Text)
        ListBox9.Items.Add(TextBox31.Text)
        ListBox9.Items.Add(TextBox32.Text)
        'funcion unir o formar combinaciones 10o lisb
        ListBox10.Items.Add(TextBox24.Text)
        ListBox10.Items.Add(TextBox26.Text)
        ListBox10.Items.Add(TextBox28.Text)
        ListBox10.Items.Add(TextBox33.Text)
        ListBox10.Items.Add(TextBox34.Text)
        ListBox10.Items.Add(TextBox35.Text)
        'funcion unir o formar combinaciones 11o lisb
        ListBox11.Items.Add(TextBox2.Text)
        ListBox11.Items.Add(TextBox4.Text)
        ListBox11.Items.Add(TextBox23.Text)
        ListBox11.Items.Add(TextBox31.Text)
        ListBox11.Items.Add(TextBox32.Text)
        ListBox11.Items.Add(TextBox34.Text)
        'funcion unir o formar combinaciones 12o lisb
        ListBox12.Items.Add(TextBox1.Text)
        ListBox12.Items.Add(TextBox2.Text)
        ListBox12.Items.Add(TextBox4.Text)
        ListBox12.Items.Add(TextBox32.Text)
        ListBox12.Items.Add(TextBox33.Text)
        ListBox12.Items.Add(TextBox35.Text)
        'funcion unir o formar combinaciones 13o lisb
        ListBox13.Items.Add(TextBox6.Text)
        ListBox13.Items.Add(TextBox13.Text)
        ListBox13.Items.Add(TextBox31.Text)
        ListBox13.Items.Add(TextBox33.Text)
        ListBox13.Items.Add(TextBox35.Text)
        ListBox13.Items.Add(TextBox36.Text)

        'funcion unir o formar combinaciones 14o lisb
        ListBox14.Items.Add(TextBox13.Text)
        ListBox14.Items.Add(TextBox14.Text)
        ListBox14.Items.Add(TextBox30.Text)
        ListBox14.Items.Add(TextBox31.Text)
        ListBox14.Items.Add(TextBox33.Text)
        ListBox14.Items.Add(TextBox35.Text)
        'funcion unir o formar combinaciones 15o lisb
        ListBox15.Items.Add(TextBox6.Text)
        ListBox15.Items.Add(TextBox7.Text)
        ListBox15.Items.Add(TextBox8.Text)
        ListBox15.Items.Add(TextBox12.Text)
        ListBox15.Items.Add(TextBox14.Text)
        ListBox15.Items.Add(TextBox15.Text)
        ListBox15.Items.Add(TextBox30.Text)
        'funcion unir o formar combinaciones 16o lisb
        'funcion unir o formar combinaciones 17o lisb
        'funcion unir o formar combinaciones 18o lisb
        'funcion unir o formar combinaciones 19o lisb
        'funcion unir o formar combinaciones 20o lisb



    End Sub



    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.Close()
    End Sub

    Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
        TextBox1.Text = r1 + 1
        TextBox2.Text = r1 + 2
        TextBox3.Text = r1 + 3
        TextBox4.Text = r1 - 1
        TextBox5.Text = r1 - 2
        TextBox6.Text = r1 - 3

        TextBox7.Text = r2 + 1
        TextBox8.Text = r2 + 2
        TextBox9.Text = r2 + 3
        TextBox10.Text = r2 - 1
        TextBox11.Text = r2 - 2
        TextBox12.Text = r2 - 3

        TextBox13.Text = r3 + 1
        TextBox14.Text = r3 + 2
        TextBox15.Text = r3 + 3
        TextBox16.Text = r3 - 1
        TextBox17.Text = r3 - 2
        TextBox18.Text = r3 - 3


        TextBox19.Text = r4 + 1
        TextBox20.Text = r4 + 2
        TextBox21.Text = r4 + 3
        TextBox22.Text = r4 - 1
        TextBox23.Text = r4 - 2
        TextBox24.Text = r4 - 3

        TextBox25.Text = r5 + 1
        TextBox26.Text = r5 + 2
        TextBox27.Text = r5 + 3
        TextBox28.Text = r5 - 1
        TextBox29.Text = r5 - 2
        TextBox30.Text = r5 - 3


        TextBox31.Text = r6 + 1
        TextBox32.Text = r6 + 2
        TextBox33.Text = r6 + 3
        TextBox34.Text = r6 - 1
        TextBox35.Text = r6 - 2
        TextBox36.Text = r6 - 3


    End Sub

    Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged
        TextBox1.Text = ar1 + 1
        TextBox2.Text = ar1 + 2
        TextBox3.Text = ar1 + 3
        TextBox4.Text = ar1 - 1
        TextBox5.Text = ar1 - 2
        TextBox6.Text = ar1 - 3

        TextBox7.Text = br2 + 1
        TextBox8.Text = br2 + 2
        TextBox9.Text = br2 + 3
        TextBox10.Text = br2 - 1
        TextBox11.Text = br2 - 2
        TextBox12.Text = br2 - 3

        TextBox13.Text = cr3 + 1
        TextBox14.Text = cr3 + 2
        TextBox15.Text = cr3 + 3
        TextBox16.Text = cr3 - 1
        TextBox17.Text = cr3 - 2
        TextBox18.Text = cr3 - 3


        TextBox19.Text = dr4 + 1
        TextBox20.Text = dr4 + 2
        TextBox21.Text = dr4 + 3
        TextBox22.Text = dr4 - 1
        TextBox23.Text = dr4 - 2
        TextBox24.Text = dr4 - 3

        TextBox25.Text = er5 + 1
        TextBox26.Text = er5 + 2
        TextBox27.Text = er5 + 3
        TextBox28.Text = er5 - 1
        TextBox29.Text = er5 - 2
        TextBox30.Text = er5 - 3


        TextBox31.Text = sr6 + 1
        TextBox32.Text = sr6 + 2
        TextBox33.Text = sr6 + 3
        TextBox34.Text = sr6 - 1
        TextBox35.Text = sr6 - 2
        TextBox36.Text = sr6 - 3
    End Sub

    Private Sub CheckBox3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox3.CheckedChanged

    End Sub

    Private Sub CheckBox4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox4.CheckedChanged

    End Sub

    Private Sub CheckBox5_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox5.CheckedChanged

    End Sub

    Private Sub CheckBox6_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox6.CheckedChanged

    End Sub





    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Dim Num As Double
        Randomize()
        Num = Rnd()
        MsgBox(Num)
    End Sub

   
    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
       
        ListBox1.Items.Clear()
        ListBox2.Items.Clear()
        ListBox3.Items.Clear()
        ListBox4.Items.Clear()
        ListBox5.Items.Clear()
        ListBox6.Items.Clear()
        ListBox7.Items.Clear()
        ListBox8.Items.Clear()
        ListBox9.Items.Clear()
        ListBox10.Items.Clear()
        ListBox11.Items.Clear()
        ListBox12.Items.Clear()
        ListBox13.Items.Clear()
        ListBox14.Items.Clear()
        ListBox15.Items.Clear()
        ListBox16.Items.Clear()
        ListBox17.Items.Clear()
        ListBox18.Items.Clear()
        ListBox19.Items.Clear()
        ListBox20.Items.Clear()
       
    End Sub
End Class



Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: Eleкtro en 26 Julio 2014, 10:40 AM
Hola

Antes de nada quiero avisarte de que todos los códigos los he escrito al vuelo (en el Notepad) si algo da error de sintaxis, disculpa.






Citar
Código (vbnet) [Seleccionar]
       For Each c As Control In f.Controls
          If TypeOf c Is TextBox Then
              c.Text = "" ' eliminar el texto  
          End If
      Next

Esa parte se puede simplificar un poquito (solo un poquito):

Utiliza el método 'OfType' para especificar el tipo de control.
Y utiliza el método "Clear" del TextBox.

Código (vbnet) [Seleccionar]
for each tb as textbox in Me.f.Controls.OfType(Of TextBox)
tb.Clear()
next tb







Citar
Código (vbnet) [Seleccionar]
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Esa parte es demasiado grande pero no percibo el patron que sigues al añadir los textbox como para poder ayudarte a simplificar el código.

Lo único, que podrías utilizar el método "AddRange" para añadir varios objetos a la colección, en una sola instrucción:

Código (vbnet) [Seleccionar]
ListBox1.Items.addrange({TextBox1.Text,TextBox6.Text,TextBox7.Text,TextBox8.Text,TextBox10.Text,TextBox12.Text})






Citar
Código (vbnet) [Seleccionar]
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged
Private Sub CheckBox3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox3.CheckedChanged
Private Sub CheckBox4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox4.CheckedChanged
Private Sub CheckBox5_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox5.CheckedChanged
Private Sub CheckBox6_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox6.CheckedChanged

Aquí el patrón que usaste es perceptible.

( Podrías hacerlo de varias maneras, pero no te voy a confundir con más código que este )

primero de nada te suscribes al mismo evento de todos los checkboxes a un único event-handler:

Código (vbnet) [Seleccionar]
Private Sub CheckBoxes_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles CheckBox1.CheckedChanged, checkbox2.CheckedChanged, checkbox3.CheckedChanged 'etc...


y luego puedes simplificar el bloque entero en algo así:

Código (vbnet) [Seleccionar]
dim values as integer()

' asigno los valores apropiados al array, según el checkbox que haya lanzado el evento CheckedChanged
' el primer valor negativo '-0' se omitirá, es para compensar el índice basado en "1" de los textbox y del for
select case sender.name

case "CheckBox1"
values = {-0,r1,r2,r3,r4,r5,r6}

case "CheckBox2"
values = {-0,ar1 ,br2 ,cr3 ,dr4 ,er5 ,sr6 }

case "CheckBox3"
' ...

case else
' ...

end case

for x as integer = 1 to 36 step 6 'textbox1 to textbox36

me.controls("textbox" & cstr(x)).text   = cstr(values(x) +1i) 'tb1
me.controls("textbox" & cstr(x+1)).text = cstr(values(x) +2i) 'tb2
me.controls("textbox" & cstr(x+2)).text = cstr(values(x) +3i) 'tb3
me.controls("textbox" & cstr(x+3)).text = cstr(values(x) -1i) 'tb4
me.controls("textbox" & cstr(x+4)).text = cstr(values(x) -2i) 'tb5
me.controls("textbox" & cstr(x+5)).text = cstr(values(x) -3i) 'tb6

next x







Citar
Código (vbnet) [Seleccionar]
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

Aquí ya te pasaste '¬¬

Podrías haber aplicado el mismo principio que aplicaste al usar:

Citar
Código (vbnet) [Seleccionar]
For Each c As Control In f.Controls
          If TypeOf c Is ...

Pero ni eso hiciste '¬¬ (supongo que ya estarías agobiado xD)

Creo que esto ya sabrás como resolverlo, te mostré un ejemplo de lo mismo al principio :P
Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: luis456 en 26 Julio 2014, 12:24 PM
Bueno ya me enrede de nuevo  :-( de verdad que lo de estas combinaciones me esta poniendo tarambana jejejje

Ahora trasteando he conseguido esto que según lo que veo me podría servir mucho ya que puedo jugar con las posiciones ahora creo que esto es para texto y no se si me sirve numerico y como evitaria los repetidos

   deshaceCombina(0)=mid(cadena,1,1)
   deshaceCombina(1)=mid(cadena,2,1)
   deshaceCombina(2)=mid(cadena,3,1)
   deshaceCombina(3)=mid(cadena,4,1)
Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: Jero67 en 27 Septiembre 2014, 22:03 PM
Hola Luis.

Llevo tiempo sin entrar por aquí, así que no había visto este post.

Creo que sé lo que quieres, solo creo, y la solución es bastante sencilla, si es realmente lo que quieres.

A ver si te he entendido:

Tienes un grupo de combinaciones con números guía (01,02,03,04,05,06) y quieres cambiarlo por tus números (17,20,25,31,38,41,43,47,49), el caso es tan sencillo como meter cada grupo de combinaciones en un List o Array y tus números en otro List o Array. Después de esto crear un tercer List o Array con los números cambiados, por ejemplo:

LIST de combinaciones con los números guía
01,02,03,04,05,06
01,02,03,04,05,07
01,02,03,04,05,08
01,02,03,04,05,09

List con nuestros números
17
20
25
31
38
41
43
47
49


En el tercer List tendremos que sustituir cada uno de los números guía por los nuestros propios:

List con nuestros números:

17,20,25,31,38,41
17,20,25,31,38,43
17,20,25,31,38,47
17,20,25,31,38,49

Lo que no sé es si la combinación de números guía la quieres generar tu o bien la quieres coger desde un fichero .txt, de esta segunda forma lo tendrías mas fácil y es simplemente cargando el fichero .txt con las combinaciones en el List o Array de números guía.

Espero que sea esto lo que quieres conseguir.

Un saludo
Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: XresH en 27 Septiembre 2014, 22:32 PM
fa, lo lei todo, creo que antes de comenzar a meter codigo hay que entender al 100 % lo que quiere, es decir de eso se trata programar, de llevar un problema a las manos del ordenador, pero sino captamos el problema es dificil desarrollar una posible solucion, asi no se entreveran, sinceramente todavia tengo dudas de lo que necesita el colega de luis, todos manejamos distintos terminos en varios sentidos, no se si todavia lo necesitara o ya consiguio lo que queria debido a que el post tiene bastante tiempo.

Solo lo hago para saber si hay necesidad de contestar o solamente dejarlo pasar..

Saludos.
Título: Re: Combinaciones numericas por posicion con numeros guias
Publicado por: luis456 en 28 Septiembre 2014, 16:13 PM
Cita de: Jero67 en 27 Septiembre 2014, 22:03 PM
Hola Luis.

Llevo tiempo sin entrar por aquí, así que no había visto este post.

Creo que sé lo que quieres, solo creo, y la solución es bastante sencilla, si es realmente lo que quieres.

A ver si te he entendido:

Tienes un grupo de combinaciones con números guía (01,02,03,04,05,06) y quieres cambiarlo por tus números (17,20,25,31,38,41,43,47,49), el caso es tan sencillo como meter cada grupo de combinaciones en un List o Array y tus números en otro List o Array. Después de esto crear un tercer List o Array con los números cambiados, por ejemplo:

LIST de combinaciones con los números guía
01,02,03,04,05,06
01,02,03,04,05,07
01,02,03,04,05,08
01,02,03,04,05,09

List con nuestros números
17
20
25
31
38
41
43
47
49


En el tercer List tendremos que sustituir cada uno de los números guía por los nuestros propios:

List con nuestros números:

17,20,25,31,38,41
17,20,25,31,38,43
17,20,25,31,38,47
17,20,25,31,38,49

Lo que no sé es si la combinación de números guía la quieres generar tu o bien la quieres coger desde un fichero .txt, de esta segunda forma lo tendrías mas fácil y es simplemente cargando el fichero .txt con las combinaciones en el List o Array de números guía.

Espero que sea esto lo que quieres conseguir.

Un saludo


Si veo que cojiste la idea :) y los números se pueden cargar desde un txt o de una variable que ya contiene los números a combinar


saludos
Luis