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
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
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
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
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
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
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.
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)
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)
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
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
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?
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
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?
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
Solo para estar claro, algo como esto es lo que buscas? (aunque no está en .net se entiende)
#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...
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
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
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
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 ????
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
He logrado esto :) todavia me falta grabar en txt y eliminar repetidos y meter los numeros a combinar manualmente :)
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
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.
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
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
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.
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
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 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.
for each tb as textbox in Me.f.Controls.OfType(Of TextBox)
tb.Clear()
next tb
CitarPrivate 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:
ListBox1.Items.addrange({TextBox1.Text,TextBox6.Text,TextBox7.Text,TextBox8.Text,TextBox10.Text,TextBox12.Text})
CitarPrivate 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:
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í:
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
CitarPrivate 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:
CitarFor 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
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)
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
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.
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