elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Combinaciones numericas por posicion con numeros guias
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 Ir Abajo Respuesta Imprimir
Autor Tema: Combinaciones numericas por posicion con numeros guias  (Leído 19,831 veces)
luis456


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re:
« Respuesta #10 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



En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
Slava_TZD
Wiki

Desconectado Desconectado

Mensajes: 1.466

♪ [8675309] ♪


Ver Perfil WWW
Re: Combinaciones numericas por posicion con numeros guias
« Respuesta #11 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?




« Última modificación: 30 Junio 2014, 21:43 pm por Tzhed\ Kyperf/ » En línea


The fact is, even if you were to stop bombing us, imprisoning us, torturing us, vilifying us, and usurping our lands, we would continue to hate you because our primary reason for hating you will not cease to exist until you embrace Islam.
luis456


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re: Combinaciones numericas por posicion con numeros guias
« Respuesta #12 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












« Última modificación: 30 Junio 2014, 22:46 pm por luis456 » En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
Slava_TZD
Wiki

Desconectado Desconectado

Mensajes: 1.466

♪ [8675309] ♪


Ver Perfil WWW
Re: Combinaciones numericas por posicion con numeros guias
« Respuesta #13 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...
« Última modificación: 30 Junio 2014, 23:01 pm por Tzhed\ Kyperf/ » En línea


The fact is, even if you were to stop bombing us, imprisoning us, torturing us, vilifying us, and usurping our lands, we would continue to hate you because our primary reason for hating you will not cease to exist until you embrace Islam.
luis456


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re: Combinaciones numericas por posicion con numeros guias
« Respuesta #14 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
En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Combinaciones numericas por posicion con numeros guias
« Respuesta #15 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) , 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 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
« Última modificación: 6 Julio 2014, 10:17 am por Eleкtro » En línea



luis456


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re: Combinaciones numericas por posicion con numeros guias
« Respuesta #16 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) , 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 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

En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
luis456


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re: Combinaciones numericas por posicion con numeros guias
« Respuesta #17 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


« Última modificación: 8 Julio 2014, 12:02 pm por luis456 » En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
luis456


Desconectado Desconectado

Mensajes: 551



Ver Perfil
Re: Combinaciones numericas por posicion con numeros guias
« Respuesta #18 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
« Última modificación: 8 Julio 2014, 12:40 pm por luis456 » En línea

Que tu sabiduria no sea motivo de Humillacion para los demas
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.885



Ver Perfil
Re: Combinaciones numericas por posicion con numeros guias
« Respuesta #19 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.  
« Última modificación: 12 Julio 2014, 11:21 am por Eleкtro » En línea



Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Combinaciones numericas « 1 2 3 »
Hacking
Touring 25 26,592 Último mensaje 17 Febrero 2012, 00:35 am
por hcalderon11
Generador de claves numericas con todas las combinaciones posibles??? (RESUELTO) « 1 2 »
Scripting
SuperDraco 12 26,313 Último mensaje 1 Julio 2010, 23:14 pm
por SuperDraco
Combinaciones con 54 numeros
.NET (C#, VB.NET, ASP)
mr_marley 3 9,591 Último mensaje 27 Noviembre 2011, 01:56 am
por mr_marley
Buscador de combinaciones numéricas
Dudas Generales
hcalderon11 0 3,513 Último mensaje 16 Febrero 2012, 21:49 pm
por hcalderon11
formar combinaciones de 7 y 8 numeros con 25 numeros « 1 2 ... 5 6 »
.NET (C#, VB.NET, ASP)
luis456 51 31,612 Último mensaje 31 Octubre 2014, 17:48 pm
por luis456
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines