Foro de elhacker.net

Programación => .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
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
  1. Public Class Form1
  2.    Dim maximum As Short = 99
  3.    Dim Número As Double
  4.    Private TextBoxes As TextBox() = {Nothing}
  5.    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()
  6.    Private _textBox As Object
  7.    Private Property ListBox1Count As Integer
  8.    ReadOnly MAX As Integer = 99
  9.  
  10.  
  11.     l
  12.  
  13.  
  14. Public Sub solonumeros(ByRef e As System.Windows.Forms.KeyPressEventArgs)
  15.        ' evitar letras
  16.        If Char.IsDigit(e.KeyChar) Then
  17.            e.Handled = False
  18.        ElseIf Char.IsControl(e.KeyChar) Then
  19.            e.Handled = False
  20.        ElseIf Char.IsSeparator(e.KeyChar) Then
  21.            e.Handled = False
  22.        Else
  23.            e.Handled = True
  24.        End If
  25.  
  26.    End Sub
  27.  
  28.  
  29. ' Elimino duplicados al mismo tiempo que selecciono los números inferiores a MAX.
  30.        Dim Resultss As IEnumerable(Of Integer) =
  31.            (
  32.                From Value As Integer
  33.                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
  34.                Where Value <= MAX
  35.            )
  36.  
  37.  
  38. ' concateno todos y muestro en un listbox
  39.  
  40. Dim Rand288 As New Random
  41.  
  42.        Dim Result288 As IEnumerable(Of Integer) =
  43.            (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).
  44.        Distinct.
  45.        Select(Function(Value As Integer)
  46.                   Return If(Value < MAX, Value, Rand.Next(0, MAX))
  47.               End Function))
  48.        ListBox12.Items.AddRange(Result288.Cast(Of Object).ToArray)
  49.  
  50.  
  51.  
  52.  End Sub
  53. End Class
  54.  





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
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:

Código:
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
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
  1. Public Class ComboTest : Inherits Form
  2.  
  3. #Region " Objects, Vars "
  4.  
  5.    ' La Class "Random", es necesaria para desordenar una colección
  6.    ' y esta declaración tiene que ir siempre fuera de cualquier Sub.
  7.    Private ComboRandomizer As New Random
  8.  
  9.    ' El control que creo en tiempo de ejecución, donde mostraré las combinaciones.
  10.    Private rtb As New RichTextBox With
  11.            {
  12.              .Dock = DockStyle.Fill,
  13.              .Font = New Font("Lucida Console", 10.0F)
  14.            }
  15.  
  16.    ' Una "palanca" para habilitar/deshabilitar el bloque de depuración.
  17.    Private EnableDebug As Boolean = False
  18.  
  19.    ' Instancio una lista donde iremos guardando cada combinación obtenida.
  20.    Private Combos As New List(Of Integer())
  21.  
  22.    ' Otra lista donde le daré el formato deseado a los números.
  23.    Dim ComboStrings As List(Of String) = Nothing
  24.  
  25.    ' El máximo de combinaciones.
  26.    Private Property MaxCombos As Integer = 80I
  27.  
  28.    ' El máximo de longitud para cada combinación.
  29.    Private Property MaxComboLength As Integer = 6I
  30.  
  31.    ' Los números "guías" que usaremos para rellenar cada combinación.
  32.    Private ReadOnly Numbers As Integer() =
  33.        (From n As Integer In
  34.         ("01-02-03-04-05-06-07-08-09-10-11-12-13-14-15-16-17-18-19-20-" &
  35.          "21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36-37-38-39-40-" &
  36.          "41-42-43-44-45-46-47-48-49-50"
  37.         ).Split({"-"}, StringSplitOptions.RemoveEmptyEntries)).ToArray
  38.  
  39. #End Region
  40.  
  41. #Region " Constructors "
  42.  
  43.        ' De este Sub no hagas caso, es el constructor del Form.
  44.    Public Sub New()
  45.  
  46.        ' This call is required by the designer.
  47.        ' Add any initialization after the InitializeComponent() call.
  48.        InitializeComponent()
  49.  
  50.        ' Añado el control al Form.
  51.        Me.Controls.Add(rtb)
  52.  
  53.    End Sub
  54.  
  55. #End Region
  56.  
  57. #Region " Event-Handlers "
  58.  
  59.    Private Sub ComboTest() Handles MyBase.Load
  60.  
  61.        Me.DoCombos()
  62.        Me.PrintCombos()
  63.  
  64.    End Sub
  65.  
  66. #End Region
  67.  
  68. #Region " Methods "
  69.  
  70.    ' La función que se encarga de desordenar y devolverte una combinación.
  71.    ' By Elektro.
  72.    Friend Function GetRandomCombination(Of T)([Collection] As IEnumerable(Of T),
  73.                                               [Length] As Integer) As IEnumerable(Of T)
  74.  
  75.        Return (From Item As T In [Collection] Order By ComboRandomizer.Next Take [Length]).ToArray
  76.  
  77.    End Function
  78.  
  79.    Private Sub DoCombos()
  80.  
  81.        ' Añadir combinaciones a la lista, hasta que la lista tenga 'MaxComboLength' (80) elementos.
  82.        Do Until Combos.Count = (MaxCombos - 1)
  83.  
  84.            ' Obtengo una combinación.
  85.            Dim tmpCombo As Integer() = Me.GetRandomCombination(Of Integer)(Numbers, MaxComboLength)
  86.  
  87.            ' Ordeno los elementos de la combinación, de menos a mayor.
  88.            Array.Sort(tmpCombo)
  89.  
  90.            ' Añado la combinación a la lista.
  91.            Combos.Add(tmpCombo)
  92.  
  93.        Loop
  94.  
  95.        ' Ordeno los elementos de la lista, basandome en el orden de los elementos de cada Array.
  96.        ' NOTA: Puede tener fallos al ordenar, no aseguro que el orden sea perfecto.
  97.        Combos = (From Combo As Integer() In Combos Order By Convert.ToDecimal(String.Join("", Combo)) Ascending).ToList
  98.        Combos = (From Combo As Integer() In Combos Order By Combo.First Ascending).ToList
  99.  
  100.        ' Además, creo utra lista Strings, para darle formato a cada combo numérico,
  101.        ' 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.
  102.        Me.ComboStrings =
  103.            (From Combo In Combos
  104.             Select (String.Join(" | ", From Value As String In Combo
  105.                                       Select If(Value.Length = 1, "0" & Value, Value)))).ToList
  106.  
  107. #If DEBUG Then
  108.  
  109.        ' El bloque de depuración.
  110.        ' Este bloque entero es para testear el formato que le quieras dar.
  111.        If Me.EnableDebug Then
  112.  
  113.            Dim sb As New System.Text.StringBuilder
  114.  
  115.            With sb
  116.  
  117.                For Index As Integer = 0 To (MaxCombos - 1)
  118.  
  119.                    sb.AppendLine(String.Format("Combo sin formato:"))
  120.                    sb.AppendLine(String.Join(", ", Combos(Index)))
  121.                    sb.AppendLine()
  122.                    sb.AppendLine(String.Format("Combo con formato:"))
  123.                    sb.AppendLine(String.Join(", ", ComboStrings(Index)))
  124.  
  125.                    MessageBox.Show(sb.ToString, "", MessageBoxButtons.OK, MessageBoxIcon.Information)
  126.  
  127.                    sb.Clear()
  128.  
  129.                Next Index
  130.  
  131.            End With
  132.  
  133.        End If
  134.  
  135. #End If
  136.  
  137.    End Sub
  138.  
  139.    Private Sub PrintCombos()
  140.  
  141.        ' Muestro los Combos en el control.
  142.        With Me.rtb
  143.  
  144.            .SuspendLayout()
  145.            For Each Combo As String In Me.ComboStrings
  146.                .AppendText(Combo)
  147.                .AppendText(Environment.NewLine & New String("-", Combo.Length) & Environment.NewLine)
  148.            Next Combo
  149.            .ResumeLayout()
  150.  
  151.            .Select(0, 0)
  152.  
  153.        End With
  154.  
  155.    End Sub
  156.  
  157. #End Region
  158.  
  159. End Class
  160.  

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
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:

Código:
A B C D
1 2 3 4

3 Combinaciones de 4:

Código:
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
  1. #Numeros que ha introducido el usuario, en este caso 1 2 3 4
  2. %guia = ('A' => 1, 'B', => 2, 'C' => 3, 'D' => 4);
  3.  
  4. #Combinaciones predefinidas
  5. @combinaciones = ('A-B-C-D', 'A-B-D-C', 'A-D-B-C');
  6.  
  7. foreach(@combinaciones) {
  8.  s/(A|B|C|D)/$guia{$1}/g;
  9.  say;
  10. }

El output es este:

Código:
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:

Citar
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

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

Código:
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):
Código:
   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
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):
Código:
   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
  1. Public Class ComboTest : Inherits Form
  2.  
  3. #Region " Objects, Vars "
  4.  
  5.    ' La Class "Random", es necesaria para desordenar una colección
  6.    ' y esta declaración tiene que ir siempre fuera de cualquier Sub.
  7.    Private ComboRandomizer As New Random
  8.  
  9.    ' El control que creo en tiempo de ejecución, donde mostraré las combinaciones.
  10.    Private rtb As New RichTextBox With
  11.            {
  12.              .Dock = DockStyle.Fill,
  13.              .Font = New Font("Lucida Console", 10.0F)
  14.            }
  15.  
  16.    ' Una "palanca" para habilitar/deshabilitar el bloque de depuración.
  17.    Private EnableDebug As Boolean = False
  18.  
  19.    ' Instancio una lista donde iremos guardando cada combinación obtenida.
  20.    Private Combos As New List(Of Integer())
  21.  
  22.  
  23.    ' enpesamos combis
  24.    Private ReadOnly NumberWheel As New Dictionary(Of Integer, Integer) From
  25.       {{1, 15}, {2, 19}, {3, 20}, {4, 22}, {5, 22}}
  26.  
  27.    ' Otra lista donde le daré el formato deseado a los números.
  28.    Dim ComboStrings As List(Of String) = Nothing
  29.  
  30.    ' El máximo de combinaciones.
  31.    Private Property MaxCombos As Integer = 50I
  32.  
  33.    ' El máximo de longitud para cada combinación.
  34.    Private Property MaxComboLength As Integer = 11I
  35.  
  36.    ' Los números "guías" que usaremos para rellenar cada combinación.
  37.    Private ReadOnly Numbers As Integer() =
  38.        (From n As Integer In
  39.         ("01-02-03-04-05-06" &
  40.          ""
  41.         ).Split({"-"}, StringSplitOptions.RemoveEmptyEntries)).ToArray
  42.  
  43. #End Region
  44.  
  45. #Region " Constructors "
  46.  
  47.    ' De este Sub no hagas caso, es el constructor del Form.
  48.    Public Sub New()
  49.  
  50.        ' This call is required by the designer.
  51.        ' Add any initialization after the InitializeComponent() call.  
  52.        InitializeComponent()
  53.  
  54.        ' Añado el control al Form.
  55.        Me.Controls.Add(rtb)
  56.  
  57.    End Sub
  58.  
  59. #End Region
  60.  
  61. #Region " Event-Handlers "
  62.  
  63.    Private Sub ComboTest() Handles MyBase.Load
  64.  
  65.        Me.DoCombos()
  66.        Me.PrintCombos()
  67.  
  68.    End Sub
  69.  
  70. #End Region
  71.  
  72. #Region " Methods "
  73.  
  74.    ' La función que se encarga de desordenar y devolverte una combinación.
  75.    ' By Elektro.
  76.    Friend Function GetRandomCombination(Of T)(ByVal [NumberWheel] As IEnumerable(Of T),
  77.                                               ByVal [Length] As Integer) As IEnumerable(Of T)
  78.  
  79.        Return (From Item As T In [NumberWheel] Order By ComboRandomizer.Next Take [Length]).ToArray
  80.  
  81.    End Function
  82.  
  83.    Private Sub DoCombos()
  84.  
  85.        ' Añadir combinaciones a la lista, hasta que la lista tenga 'MaxComboLength' (80) elementos.
  86.        Do Until Combos.Count = (MaxCombos - 1)
  87.  
  88.            ' Obtengo una combinación.
  89.            Dim tmpCombo As Integer() = Me.GetRandomCombination(Of Integer)(Numbers, MaxComboLength)
  90.  
  91.            ' Ordeno los elementos de la combinación, de menos a mayor.
  92.            Array.Sort(tmpCombo)
  93.  
  94.            ' Añado la combinación a la lista.
  95.            Combos.Add(tmpCombo)
  96.  
  97.        Loop
  98.  
  99.        ' Ordeno los elementos de la lista, basandome en el orden de los elementos de cada Array.
  100.        ' NOTA: Puede tener fallos al ordenar, no aseguro que el orden sea perfecto.
  101.        Combos = (From Combo As Integer() In Combos Order By Convert.ToDecimal(String.Join("", Combo)) Ascending).ToList
  102.        Combos = (From Combo As Integer() In Combos Order By Combo.First Ascending).ToList
  103.  
  104.        ' Además, creo utra lista Strings, para darle formato a cada combo numérico,
  105.        ' 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.
  106.        Me.ComboStrings =
  107.            (From Combo In Combos
  108.             Select (String.Join(" | ", From Value As String In Combo
  109.                                       Select If(Value.Length = 1, "0" & Value, Value)))).ToList
  110.  
  111. #If DEBUG Then
  112.  
  113.        ' El bloque de depuración.
  114.        ' Este bloque entero es para testear el formato que le quieras dar.
  115.        If Me.EnableDebug Then
  116.  
  117.            Dim sb As New System.Text.StringBuilder
  118.  
  119.            With sb
  120.  
  121.                For Index As Integer = 0 To (MaxCombos - 1)
  122.  
  123.                    sb.AppendLine(String.Format("Combo sin formato:"))
  124.                    sb.AppendLine(String.Join(", ", Combos(Index)))
  125.                    sb.AppendLine()
  126.                    sb.AppendLine(String.Format("Combo con formato:"))
  127.                    sb.AppendLine(String.Join(", ", ComboStrings(Index)))
  128.  
  129.                    MessageBox.Show(sb.ToString, "", MessageBoxButtons.OK, MessageBoxIcon.Information)
  130.  
  131.                    sb.Clear()
  132.  
  133.                Next Index
  134.  
  135.            End With
  136.  
  137.        End If
  138.  
  139. #End If
  140.  
  141.    End Sub
  142.  
  143.    Private Sub PrintCombos()
  144.  
  145.        ' Muestro los Combos en el control.
  146.        With Me.rtb
  147.  
  148.            .SuspendLayout()
  149.            For Each Combo As String In Me.ComboStrings
  150.                .AppendText(Combo)
  151.                .AppendText(Environment.NewLine & New String("-", Combo.Length) & Environment.NewLine)
  152.            Next Combo
  153.            .ResumeLayout()
  154.  
  155.            .Select(0, 0)
  156.  
  157.        End With
  158.  
  159.    End Sub
  160.  
  161. #End Region
  162.  
  163. End Class
  164.  


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
  1. Public Class ComboTest : Inherits Form
  2.  
  3. #Region " Objects, Vars "
  4.  
  5.    ' La Class "Random", es necesaria para desordenar una colección
  6.    ' y esta declaración tiene que ir siempre fuera de cualquier Sub.
  7.    Private ComboRandomizer As New Random
  8.  
  9.    ' El control que creo en tiempo de ejecución, donde mostraré las combinaciones.
  10.    Private rtb As New RichTextBox With
  11.            {
  12.              .Dock = DockStyle.Fill,
  13.              .Font = New Font("Lucida Console", 10.0F)
  14.            }
  15.  
  16.    ' Una "palanca" para habilitar/deshabilitar el bloque de depuración.
  17.    Private EnableDebug As Boolean = False
  18.  
  19.    ' Instancio una lista donde iremos guardando cada combinación obtenida.
  20.    Private Combos As New List(Of Integer())
  21.  
  22.  
  23.    ' enpesamos combis
  24.    Private ReadOnly NumberWheel As New Dictionary(Of Integer, Integer) From
  25.       {{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 ????
  26.    ' esto los he puesto a lo loco
  27.  
  28.  
  29.    ' Otra lista donde le daré el formato deseado a los números.
  30.    Dim ComboStrings As List(Of String) = Nothing
  31.  
  32.    ' El máximo de combinaciones.
  33.    Private Property MaxCombos As Integer = 20I ' <---aca esta chupado.
  34.  
  35.    ' El máximo de longitud para cada combinación.
  36.    Private Property MaxComboLength As Integer = 6I '<----- aca esta tambien chupado.
  37.  
  38.    ' Los números "guías" que usaremos para rellenar cada combinación. """"""  <-----aca estoy tratando de que estos numeros se introduscan manualmente
  39.    ' ya que cambian a cada rato y no son los mismos
  40.    Private ReadOnly Numbers As Integer() =
  41.        (From n As Integer In
  42.         ("01-02-03-04-05-06-07-12-18-22-44-48-55-69-99" &
  43.          ""
  44.         ).Split({"-"}, StringSplitOptions.RemoveEmptyEntries)).ToArray
  45.  
  46. #End Region
  47.  
  48. #Region " Constructors "
  49.  
  50.    ' De este Sub no hagas caso, es el constructor del Form.
  51.    Public Sub New()
  52.  
  53.        ' This call is required by the designer.
  54.        ' Add any initialization after the InitializeComponent() call.  
  55.        InitializeComponent()
  56.  
  57.        ' Añado el control al Form.
  58.        Me.Controls.Add(rtb)
  59.  
  60.    End Sub
  61.  
  62. #End Region
  63.  
  64. #Region " Event-Handlers "
  65.  
  66.    Private Sub ComboTest() Handles MyBase.Load
  67.  
  68.        Me.DoCombos()
  69.        Me.PrintCombos()
  70.  
  71.    End Sub
  72.  
  73. #End Region
  74.  
  75. #Region " Methods "
  76.  
  77.    ' La función que se encarga de desordenar y devolverte una combinación.'<---- tengo que eliminar las conbis  repetidas ????
  78.    ' By Elektro.
  79.    Friend Function GetRandomCombination(Of T)(ByVal [NumberWheel] As IEnumerable(Of T),
  80.                                               ByVal [Length] As Integer) As IEnumerable(Of T)
  81.  
  82.        Return (From Item As T In [NumberWheel] Order By ComboRandomizer.Next Take [Length]).ToArray
  83.  
  84.    End Function
  85.  
  86.    Private Sub DoCombos()
  87.  
  88.        ' Añadir combinaciones a la lista, hasta que la lista tenga 'MaxComboLength' (80) elementos.
  89.        Do Until Combos.Count = (MaxCombos - 1)
  90.  
  91.            ' Obtengo una combinación.
  92.            Dim tmpCombo As Integer() = Me.GetRandomCombination(Of Integer)(Numbers, MaxComboLength)
  93.  
  94.            ' Ordeno los elementos de la combinación, de menos a mayor.
  95.            Array.Sort(tmpCombo)
  96.  
  97.            ' Añado la combinación a la lista.'<----y  grabar estas listas en un txt ????
  98.            Combos.Add(tmpCombo)
  99.  
  100.        Loop
  101.  
  102.        ' Ordeno los elementos de la lista, basandome en el orden de los elementos de cada Array.
  103.        ' NOTA: Puede tener fallos al ordenar, no aseguro que el orden sea perfecto.
  104.        Combos = (From Combo As Integer() In Combos Order By Convert.ToDecimal(String.Join("", Combo)) Ascending).ToList
  105.        Combos = (From Combo As Integer() In Combos Order By Combo.First Ascending).ToList
  106.  
  107.        ' Además, creo utra lista Strings, para darle formato a cada combo numérico,
  108.        ' 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.
  109.        Me.ComboStrings =
  110.            (From Combo In Combos
  111.             Select (String.Join(" | ", From Value As String In Combo
  112.                                       Select If(Value.Length = 1, "0" & Value, Value)))).ToList
  113.  
  114. #If DEBUG Then
  115.  
  116.        ' El bloque de depuración.
  117.        ' Este bloque entero es para testear el formato que le quieras dar.
  118.        If Me.EnableDebug Then
  119.  
  120.            Dim sb As New System.Text.StringBuilder
  121.  
  122.            With sb
  123.  
  124.                For Index As Integer = 0 To (MaxCombos - 1)
  125.  
  126.                    sb.AppendLine(String.Format("Combo sin formato:"))
  127.                    sb.AppendLine(String.Join(", ", Combos(Index)))
  128.                    sb.AppendLine()
  129.                    sb.AppendLine(String.Format("Combo con formato:"))
  130.                    sb.AppendLine(String.Join(", ", ComboStrings(Index)))
  131.  
  132.                    MessageBox.Show(sb.ToString, "", MessageBoxButtons.OK, MessageBoxIcon.Information)
  133.  
  134.                    sb.Clear()
  135.  
  136.                Next Index
  137.  
  138.            End With
  139.  
  140.        End If
  141.  
  142. #End If
  143.  
  144.    End Sub
  145.  
  146.    Private Sub PrintCombos()
  147.  
  148.        ' Muestro los Combos en el control.
  149.        With Me.rtb
  150.  
  151.            .SuspendLayout()
  152.            For Each Combo As String In Me.ComboStrings
  153.                .AppendText(Combo)
  154.                .AppendText(Environment.NewLine & New String("-", Combo.Length) & Environment.NewLine)
  155.            Next Combo
  156.            .ResumeLayout()
  157.  
  158.            .Select(0, 0)
  159.  
  160.        End With
  161.  
  162.    End Sub
  163.  
  164. #End Region
  165.  
  166. End Class
  167.  


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
  1. Public Class ComboTest : Inherits Form
  2.  
  3. #Region " Objects, Vars "
  4.  
  5.    ' La Class "Random", es necesaria para desordenar una colección
  6.    ' y esta declaración tiene que ir siempre fuera de cualquier Sub.
  7.    Private ComboRandomizer As New Random
  8.  
  9.    ' El control que creo en tiempo de ejecución, donde mostraré las combinaciones.
  10.    Private rtb As New RichTextBox With
  11.            {
  12.              .Dock = DockStyle.Fill,
  13.              .Font = New Font("Lucida Console", 10.0F)
  14.            }
  15.  
  16.    ' Una "palanca" para habilitar/deshabilitar el bloque de depuración.
  17.    Private EnableDebug As Boolean = False
  18.  
  19.    ' Instancio una lista donde iremos guardando cada combinación obtenida.
  20.    Private Combos As New List(Of Integer())
  21.  
  22.    ' Otra lista donde le daré el formato deseado a los números.
  23.    Dim ComboStrings As List(Of String) = Nothing
  24.  
  25.    ' El máximo de combinaciones.
  26.    Private Property MaxCombos As Integer = 80I
  27.  
  28.    ' El máximo de longitud para cada combinación.
  29.    Private Property MaxComboLength As Integer = 6I
  30.  
  31.    ' Los números "guías" que usaremos para rellenar cada combinación.
  32.    'Private ReadOnly Numbers As Integer() =
  33.    '    (From n As Integer In
  34.    '     ("01-02-03-04-05-06-07-08-09-10-11-12-13-14-15-16-17-18-19-20-" &
  35.    '      "21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36-37-38-39-40-" &
  36.    '      "41-42-43-44-45-46-47-48-49-50"
  37.    '     ).Split({"-"}, StringSplitOptions.RemoveEmptyEntries)).ToArray
  38.  
  39.    ' Izquierda: Número "guía"
  40.    ' Derecha: Número asociado
  41.    Private ReadOnly NumberWheel As New Dictionary(Of Integer, Integer) From
  42.      {
  43.          {1, 21}, {2, 22}, {3, 23}, {4, 24}, {5, 25},
  44.          {6, 26}, {7, 27}, {8, 28}, {9, 29}, {10, 30},
  45.          {11, 31}, {12, 32}, {13, 33}, {14, 34}, {15, 35},
  46.          {16, 36}, {17, 37}, {18, 38}, {19, 39}, {20, 40}
  47.      }
  48.  
  49. #End Region
  50.  
  51. #Region " Constructors "
  52.  
  53.    ' De este Sub no hagas caso, es el constructor del Form.
  54.    Public Sub New()
  55.  
  56.        ' This call is required by the designer.
  57.        ' Add any initialization after the InitializeComponent() call.
  58.        InitializeComponent()
  59.  
  60.        With Me
  61.            ' Seteo algunas propiedades sin imortancia.
  62.            .Size = New Point(320, 480)
  63.            .StartPosition = FormStartPosition.CenterScreen
  64.            ' Añado el control al Form.
  65.            .Controls.Add(rtb)
  66.        End With
  67.  
  68.    End Sub
  69.  
  70. #End Region
  71.  
  72. #Region " Event-Handlers "
  73.  
  74.    Private Sub ComboTest() Handles MyBase.Shown
  75.  
  76.        Me.DoCombos()
  77.        Me.PrintCombos()
  78.  
  79.    End Sub
  80.  
  81. #End Region
  82.  
  83. #Region " Methods "
  84.  
  85.    ' La función que se encarga de desordenar y devolverte una combinación.
  86.    ' By Elektro.
  87.    'Friend Function GetRandomCombination(Of T)(ByVal [Collection] As IEnumerable(Of T),
  88.    '                                          ByVal [Length] As Integer) As IEnumerable(Of T)
  89.  
  90.    '    Return (From Item As T In [Collection]
  91.    '            Order By ComboRandomizer.Next
  92.    '            Take [Length]).ToArray
  93.  
  94.    'End Function
  95.  
  96.    Friend Function GetRandomCombination(Of T)([Collection] As Dictionary(Of T, T),
  97.                                               [Length] As Integer) As IEnumerable(Of T)
  98.  
  99.        Return (From Item As KeyValuePair(Of T, T) In [Collection]
  100.                Select Item.Value
  101.                Order By ComboRandomizer.Next
  102.                Take [Length]).ToArray
  103.  
  104.    End Function
  105.  
  106.    Private Sub DoCombos()
  107.  
  108.        ' Añadir combinaciones a la lista, hasta que la lista tenga 'MaxComboLength' (80) elementos.
  109.        Do Until Combos.Count = (MaxCombos - 1)
  110.  
  111.            ' Obtengo una combinación.
  112.            Dim tmpCombo As Integer() = Me.GetRandomCombination(Of Integer)(NumberWheel, MaxComboLength)
  113.  
  114.            ' Ordeno los elementos de la combinación, de menos a mayor.
  115.            Array.Sort(tmpCombo)
  116.  
  117.            ' Añado la combinación a la lista.
  118.            Combos.Add(tmpCombo)
  119.  
  120.        Loop
  121.  
  122.        ' Ordeno los elementos de la lista, basandome en el orden de los elementos de cada Array.
  123.        ' NOTA: Puede tener fallos al ordenar, no aseguro que el orden sea perfecto.
  124.        Combos = (From Combo As Integer() In Combos Order By Convert.ToDecimal(String.Join("", Combo)) Ascending).ToList
  125.        Combos = (From Combo As Integer() In Combos Order By Combo.First Ascending).ToList
  126.  
  127.        ' Además, creo utra lista Strings, para darle formato a cada combo numérico,
  128.        ' 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.
  129.        Me.ComboStrings =
  130.            (From Combo In Combos
  131.             Select (String.Join(" | ", From Value As String In Combo
  132.                                       Select If(Value.Length = 1, "0" & Value, Value)))).ToList
  133.  
  134. #If DEBUG Then
  135.  
  136.        ' El bloque de depuración.
  137.        ' Este bloque entero es para testear el formato que le quieras dar.
  138.        If Me.EnableDebug Then
  139.  
  140.            Dim sb As New System.Text.StringBuilder
  141.  
  142.            With sb
  143.  
  144.                For Index As Integer = 0 To (MaxCombos - 1)
  145.  
  146.                    sb.AppendLine(String.Format("Combo sin formato:"))
  147.                    sb.AppendLine(String.Join(", ", Combos(Index)))
  148.                    sb.AppendLine()
  149.                    sb.AppendLine(String.Format("Combo con formato:"))
  150.                    sb.AppendLine(String.Join(", ", ComboStrings(Index)))
  151.  
  152.                    MessageBox.Show(sb.ToString, "", MessageBoxButtons.OK, MessageBoxIcon.Information)
  153.  
  154.                    sb.Clear()
  155.  
  156.                Next Index
  157.  
  158.            End With
  159.  
  160.        End If
  161.  
  162. #End If
  163.  
  164.    End Sub
  165.  
  166.    Private Sub PrintCombos()
  167.  
  168.        ' Muestro los Combos en el control.
  169.        With Me.rtb
  170.  
  171.            .SuspendLayout()
  172.            For Each Combo As String In Me.ComboStrings
  173.                .AppendText(Combo)
  174.                .AppendText(Environment.NewLine & New String("-", Combo.Length) & Environment.NewLine)
  175.            Next Combo
  176.            .ResumeLayout()
  177.  
  178.            .Select(0, 0)
  179.  
  180.        End With
  181.  
  182.    End Sub
  183.  
  184. #End Region
  185.  
  186. End Class
  187.  


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
  1. Public Class Form1
  2.  
  3.  
  4.    Dim maximum As Short = 99
  5.    Dim Número As Double
  6.    Private TextBoxes As TextBox() = {Nothing}
  7.  
  8.  
  9.    Private r1 = 5
  10.    Private r2 = 15
  11.    Private r3 = 25
  12.    Private r4 = 35
  13.    Private r5 = 40
  14.    Private r6 = 45
  15.  
  16.    Private ar1 = 6
  17.    Private br2 = 10
  18.    Private cr3 = 20
  19.    Private dr4 = 30
  20.    Private er5 = 40
  21.    Private sr6 = 4
  22.  
  23.  
  24.  
  25.    Private _textBox As Object
  26.    Private Property ListBox1Count As Integer
  27.    ReadOnly MAX As Integer = 8
  28.    Dim Result22 As Integer
  29.    Dim Counter, Counter2 As Integer
  30.    Dim myLabelArray(6) As Label
  31.    Private Sub Limpiar_Cajas(ByVal f As Form)
  32.        ' recorrer todos los controles del formulario indicado  
  33.        For Each c As Control In f.Controls
  34.            If TypeOf c Is TextBox Then
  35.                c.Text = "" ' eliminar el texto  
  36.            End If
  37.        Next
  38.    End Sub
  39.  
  40.    Private Sub Button4_Click( _
  41.        ByVal sender As System.Object, _
  42.        ByVal e As System.EventArgs) Handles Button4.Click
  43.        ' pasar el formulario  
  44.        Call Limpiar_Cajas(Me)
  45.  
  46.  
  47.    End Sub
  48.  
  49.  
  50.  
  51.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
  52.        'funcion para introducir manualmente r1 = Val(TextBox1.Text)
  53.    End Sub
  54.  
  55.  
  56.  
  57.    'funcion unir o formar combinaciones
  58.    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  59.        ListBox1.Items.Add(TextBox1.Text)
  60.        ListBox1.Items.Add(TextBox6.Text)
  61.        ListBox1.Items.Add(TextBox7.Text)
  62.        ListBox1.Items.Add(TextBox8.Text)
  63.        ListBox1.Items.Add(TextBox10.Text)
  64.        ListBox1.Items.Add(TextBox12.Text)
  65.        'funcion unir o formar combinaciones segundo lisb
  66.        ListBox2.Items.Add(TextBox1.Text)
  67.        ListBox2.Items.Add(TextBox2.Text)
  68.        ListBox2.Items.Add(TextBox4.Text)
  69.        ListBox2.Items.Add(TextBox31.Text)
  70.        ListBox2.Items.Add(TextBox33.Text)
  71.        ListBox2.Items.Add(TextBox36.Text)
  72.        'funcion unir o formar combinaciones terce lisb
  73.        ListBox3.Items.Add(TextBox1.Text)
  74.        ListBox3.Items.Add(TextBox2.Text)
  75.        ListBox3.Items.Add(TextBox4.Text)
  76.        ListBox3.Items.Add(TextBox6.Text)
  77.        ListBox3.Items.Add(TextBox7.Text)
  78.        ListBox3.Items.Add(TextBox8.Text)
  79.        'funcion unir o formar combinaciones cuarto lisb
  80.        ListBox4.Items.Add(TextBox1.Text)
  81.        ListBox4.Items.Add(TextBox2.Text)
  82.        ListBox4.Items.Add(TextBox4.Text)
  83.        ListBox4.Items.Add(TextBox13.Text)
  84.        ListBox4.Items.Add(TextBox14.Text)
  85.        ListBox4.Items.Add(TextBox15.Text)
  86.        'funcion unir o formar combinaciones quinto lisb
  87.        ListBox5.Items.Add(TextBox1.Text)
  88.        ListBox5.Items.Add(TextBox5.Text)
  89.        ListBox5.Items.Add(TextBox14.Text)
  90.        ListBox5.Items.Add(TextBox15.Text)
  91.        ListBox5.Items.Add(TextBox34.Text)
  92.        ListBox5.Items.Add(TextBox35.Text)
  93.        'funcion unir o formar combinaciones sesta lisb
  94.        ListBox6.Items.Add(TextBox2.Text)
  95.        ListBox6.Items.Add(TextBox5.Text)
  96.        ListBox6.Items.Add(TextBox13.Text)
  97.        ListBox6.Items.Add(TextBox14.Text)
  98.        ListBox6.Items.Add(TextBox15.Text)
  99.        ListBox6.Items.Add(TextBox33.Text)
  100.        'funcion unir o formar combinaciones 7o lisb
  101.        ListBox7.Items.Add(TextBox6.Text)
  102.        ListBox7.Items.Add(TextBox5.Text)
  103.        ListBox7.Items.Add(TextBox2.Text)
  104.        ListBox7.Items.Add(TextBox10.Text)
  105.        ListBox7.Items.Add(TextBox11.Text)
  106.        ListBox7.Items.Add(TextBox18.Text)
  107.        'funcion unir o formar combinaciones 8o lisb
  108.        ListBox8.Items.Add(TextBox1.Text)
  109.        ListBox8.Items.Add(TextBox3.Text)
  110.        ListBox8.Items.Add(TextBox5.Text)
  111.        ListBox8.Items.Add(TextBox19.Text)
  112.        ListBox8.Items.Add(TextBox27.Text)
  113.        ListBox8.Items.Add(TextBox29.Text)
  114.        'funcion unir o formar combinaciones 9o lisb
  115.        ListBox9.Items.Add(TextBox22.Text)
  116.        ListBox9.Items.Add(TextBox25.Text)
  117.        ListBox9.Items.Add(TextBox27.Text)
  118.        ListBox9.Items.Add(TextBox30.Text)
  119.        ListBox9.Items.Add(TextBox31.Text)
  120.        ListBox9.Items.Add(TextBox32.Text)
  121.        'funcion unir o formar combinaciones 10o lisb
  122.        ListBox10.Items.Add(TextBox24.Text)
  123.        ListBox10.Items.Add(TextBox26.Text)
  124.        ListBox10.Items.Add(TextBox28.Text)
  125.        ListBox10.Items.Add(TextBox33.Text)
  126.        ListBox10.Items.Add(TextBox34.Text)
  127.        ListBox10.Items.Add(TextBox35.Text)
  128.        'funcion unir o formar combinaciones 11o lisb
  129.        ListBox11.Items.Add(TextBox2.Text)
  130.        ListBox11.Items.Add(TextBox4.Text)
  131.        ListBox11.Items.Add(TextBox23.Text)
  132.        ListBox11.Items.Add(TextBox31.Text)
  133.        ListBox11.Items.Add(TextBox32.Text)
  134.        ListBox11.Items.Add(TextBox34.Text)
  135.        'funcion unir o formar combinaciones 12o lisb
  136.        ListBox12.Items.Add(TextBox1.Text)
  137.        ListBox12.Items.Add(TextBox2.Text)
  138.        ListBox12.Items.Add(TextBox4.Text)
  139.        ListBox12.Items.Add(TextBox32.Text)
  140.        ListBox12.Items.Add(TextBox33.Text)
  141.        ListBox12.Items.Add(TextBox35.Text)
  142.        'funcion unir o formar combinaciones 13o lisb
  143.        ListBox13.Items.Add(TextBox6.Text)
  144.        ListBox13.Items.Add(TextBox13.Text)
  145.        ListBox13.Items.Add(TextBox31.Text)
  146.        ListBox13.Items.Add(TextBox33.Text)
  147.        ListBox13.Items.Add(TextBox35.Text)
  148.        ListBox13.Items.Add(TextBox36.Text)
  149.  
  150.        'funcion unir o formar combinaciones 14o lisb
  151.        ListBox14.Items.Add(TextBox13.Text)
  152.        ListBox14.Items.Add(TextBox14.Text)
  153.        ListBox14.Items.Add(TextBox30.Text)
  154.        ListBox14.Items.Add(TextBox31.Text)
  155.        ListBox14.Items.Add(TextBox33.Text)
  156.        ListBox14.Items.Add(TextBox35.Text)
  157.        'funcion unir o formar combinaciones 15o lisb
  158.        ListBox15.Items.Add(TextBox6.Text)
  159.        ListBox15.Items.Add(TextBox7.Text)
  160.        ListBox15.Items.Add(TextBox8.Text)
  161.        ListBox15.Items.Add(TextBox12.Text)
  162.        ListBox15.Items.Add(TextBox14.Text)
  163.        ListBox15.Items.Add(TextBox15.Text)
  164.        ListBox15.Items.Add(TextBox30.Text)
  165.        'funcion unir o formar combinaciones 16o lisb
  166.        'funcion unir o formar combinaciones 17o lisb
  167.        'funcion unir o formar combinaciones 18o lisb
  168.        'funcion unir o formar combinaciones 19o lisb
  169.        'funcion unir o formar combinaciones 20o lisb
  170.  
  171.  
  172.  
  173.    End Sub
  174.  
  175.  
  176.  
  177.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  178.        Me.Close()
  179.    End Sub
  180.  
  181.    Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
  182.        TextBox1.Text = r1 + 1
  183.        TextBox2.Text = r1 + 2
  184.        TextBox3.Text = r1 + 3
  185.        TextBox4.Text = r1 - 1
  186.        TextBox5.Text = r1 - 2
  187.        TextBox6.Text = r1 - 3
  188.  
  189.        TextBox7.Text = r2 + 1
  190.        TextBox8.Text = r2 + 2
  191.        TextBox9.Text = r2 + 3
  192.        TextBox10.Text = r2 - 1
  193.        TextBox11.Text = r2 - 2
  194.        TextBox12.Text = r2 - 3
  195.  
  196.        TextBox13.Text = r3 + 1
  197.        TextBox14.Text = r3 + 2
  198.        TextBox15.Text = r3 + 3
  199.        TextBox16.Text = r3 - 1
  200.        TextBox17.Text = r3 - 2
  201.        TextBox18.Text = r3 - 3
  202.  
  203.  
  204.        TextBox19.Text = r4 + 1
  205.        TextBox20.Text = r4 + 2
  206.        TextBox21.Text = r4 + 3
  207.        TextBox22.Text = r4 - 1
  208.        TextBox23.Text = r4 - 2
  209.        TextBox24.Text = r4 - 3
  210.  
  211.        TextBox25.Text = r5 + 1
  212.        TextBox26.Text = r5 + 2
  213.        TextBox27.Text = r5 + 3
  214.        TextBox28.Text = r5 - 1
  215.        TextBox29.Text = r5 - 2
  216.        TextBox30.Text = r5 - 3
  217.  
  218.  
  219.        TextBox31.Text = r6 + 1
  220.        TextBox32.Text = r6 + 2
  221.        TextBox33.Text = r6 + 3
  222.        TextBox34.Text = r6 - 1
  223.        TextBox35.Text = r6 - 2
  224.        TextBox36.Text = r6 - 3
  225.  
  226.  
  227.    End Sub
  228.  
  229.    Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged
  230.        TextBox1.Text = ar1 + 1
  231.        TextBox2.Text = ar1 + 2
  232.        TextBox3.Text = ar1 + 3
  233.        TextBox4.Text = ar1 - 1
  234.        TextBox5.Text = ar1 - 2
  235.        TextBox6.Text = ar1 - 3
  236.  
  237.        TextBox7.Text = br2 + 1
  238.        TextBox8.Text = br2 + 2
  239.        TextBox9.Text = br2 + 3
  240.        TextBox10.Text = br2 - 1
  241.        TextBox11.Text = br2 - 2
  242.        TextBox12.Text = br2 - 3
  243.  
  244.        TextBox13.Text = cr3 + 1
  245.        TextBox14.Text = cr3 + 2
  246.        TextBox15.Text = cr3 + 3
  247.        TextBox16.Text = cr3 - 1
  248.        TextBox17.Text = cr3 - 2
  249.        TextBox18.Text = cr3 - 3
  250.  
  251.  
  252.        TextBox19.Text = dr4 + 1
  253.        TextBox20.Text = dr4 + 2
  254.        TextBox21.Text = dr4 + 3
  255.        TextBox22.Text = dr4 - 1
  256.        TextBox23.Text = dr4 - 2
  257.        TextBox24.Text = dr4 - 3
  258.  
  259.        TextBox25.Text = er5 + 1
  260.        TextBox26.Text = er5 + 2
  261.        TextBox27.Text = er5 + 3
  262.        TextBox28.Text = er5 - 1
  263.        TextBox29.Text = er5 - 2
  264.        TextBox30.Text = er5 - 3
  265.  
  266.  
  267.        TextBox31.Text = sr6 + 1
  268.        TextBox32.Text = sr6 + 2
  269.        TextBox33.Text = sr6 + 3
  270.        TextBox34.Text = sr6 - 1
  271.        TextBox35.Text = sr6 - 2
  272.        TextBox36.Text = sr6 - 3
  273.    End Sub
  274.  
  275.    Private Sub CheckBox3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox3.CheckedChanged
  276.  
  277.    End Sub
  278.  
  279.    Private Sub CheckBox4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox4.CheckedChanged
  280.  
  281.    End Sub
  282.  
  283.    Private Sub CheckBox5_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox5.CheckedChanged
  284.  
  285.    End Sub
  286.  
  287.    Private Sub CheckBox6_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox6.CheckedChanged
  288.  
  289.    End Sub
  290.  
  291.  
  292.  
  293.  
  294.  
  295.    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
  296.  
  297.        Dim Num As Double
  298.        Randomize()
  299.        Num = Rnd()
  300.        MsgBox(Num)
  301.    End Sub
  302.  
  303.  
  304.    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
  305.  
  306.        ListBox1.Items.Clear()
  307.        ListBox2.Items.Clear()
  308.        ListBox3.Items.Clear()
  309.        ListBox4.Items.Clear()
  310.        ListBox5.Items.Clear()
  311.        ListBox6.Items.Clear()
  312.        ListBox7.Items.Clear()
  313.        ListBox8.Items.Clear()
  314.        ListBox9.Items.Clear()
  315.        ListBox10.Items.Clear()
  316.        ListBox11.Items.Clear()
  317.        ListBox12.Items.Clear()
  318.        ListBox13.Items.Clear()
  319.        ListBox14.Items.Clear()
  320.        ListBox15.Items.Clear()
  321.        ListBox16.Items.Clear()
  322.        ListBox17.Items.Clear()
  323.        ListBox18.Items.Clear()
  324.        ListBox19.Items.Clear()
  325.        ListBox20.Items.Clear()
  326.  
  327.    End Sub
  328. End Class
  329.  
  330.  
  331.  
  332.  


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
  1.        For Each c As Control In f.Controls
  2.           If TypeOf c Is TextBox Then
  3.               c.Text = "" ' eliminar el texto  
  4.           End If
  5.       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
  1. for each tb as textbox in Me.f.Controls.OfType(Of TextBox)
  2. tb.Clear()
  3. next tb





Citar
Código
  1. 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
  1. ListBox1.Items.addrange({TextBox1.Text,TextBox6.Text,TextBox7.Text,TextBox8.Text,TextBox10.Text,TextBox12.Text})





Citar
Código
  1. Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
  2. Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged
  3. Private Sub CheckBox3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox3.CheckedChanged
  4. Private Sub CheckBox4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox4.CheckedChanged
  5. Private Sub CheckBox5_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox5.CheckedChanged
  6. 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
  1. Private Sub CheckBoxes_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
  2. Handles CheckBox1.CheckedChanged, checkbox2.CheckedChanged, checkbox3.CheckedChanged 'etc...

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

Código
  1. dim values as integer()
  2.  
  3. ' asigno los valores apropiados al array, según el checkbox que haya lanzado el evento CheckedChanged
  4. ' el primer valor negativo '-0' se omitirá, es para compensar el índice basado en "1" de los textbox y del for
  5. select case sender.name
  6.  
  7. case "CheckBox1"
  8. values = {-0,r1,r2,r3,r4,r5,r6}
  9.  
  10. case "CheckBox2"
  11. values = {-0,ar1 ,br2 ,cr3 ,dr4 ,er5 ,sr6 }
  12.  
  13. case "CheckBox3"
  14. ' ...
  15.  
  16. case else
  17. ' ...
  18.  
  19. end case
  20.  
  21. for x as integer = 1 to 36 step 6 'textbox1 to textbox36
  22.  
  23. me.controls("textbox" & cstr(x)).text   = cstr(values(x) +1i) 'tb1
  24. me.controls("textbox" & cstr(x+1)).text = cstr(values(x) +2i) 'tb2
  25. me.controls("textbox" & cstr(x+2)).text = cstr(values(x) +3i) 'tb3
  26. me.controls("textbox" & cstr(x+3)).text = cstr(values(x) -1i) 'tb4
  27. me.controls("textbox" & cstr(x+4)).text = cstr(values(x) -2i) 'tb5
  28. me.controls("textbox" & cstr(x+5)).text = cstr(values(x) -3i) 'tb6
  29.  
  30. next x





Citar
Código
  1. 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
  1. For Each c As Control In f.Controls
  2.           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
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