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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


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


Desconectado Desconectado

Mensajes: 548



Ver Perfil
Combinaciones con subrangos
« en: 24 Noviembre 2014, 19:46 pm »

Bueno otra ves con mis rollos de combinaciones tengo este codigo que me hace estas combinaciones y mi idea es como hacer que solo aparescan combinaciones con dos números de cada subrango .los números a combinar no son fijos y varian de cantidades ( entre 20 y 80 numeros) dependiendo de otra funcion.


los subrangos serian:
01 al 09
10 al 19
20 al 29
30 al 39
40 al 49
50 al 59
60 al 69
70 al 79
80 al 89
90 al 99


Ahora este código me los combina de esta forma

01, 02, 05, 07, 08, 15, 17, 18
01, 02, 05, 07, 08, 15, 17, 45
01, 02, 05, 07, 08, 12, 15, 17
01, 02, 05, 07, 08, 15, 17, 22
01, 02, 05, 07, 08, 15, 17, 23
01, 02, 05, 07, 08, 15, 17, 27
01, 02, 05, 07, 08, 15, 17, 28
01, 02, 05, 07, 08, 15, 17, 33
01, 02, 05, 07, 08, 15, 17, 34


Pero los necesito de esta forma

01 05 10 15 20 25 35 38
07 09 11 16 24 26 70 78
10 19 35 38 45 49 80 88

como verán por cada combinación solo hay dos de cada subrango y haci llenar todas las combinaciones posibles con los números que contiene la variable.


Código
  1. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
  2.  
  3.        Dim combinations As New List(Of List(Of Integer))
  4.        Dim length As Integer = 7
  5.        Dim skipStart As Integer = 0
  6.        Do Until skipStart = (constantValues.Count - length)
  7.  
  8.            Dim values As List(Of Integer) = constantValues.GetRange(skipStart, length)
  9.            Dim count As Integer = 0
  10.  
  11.            Do Until count = (constantValues.Count - length - skipStart)
  12.  
  13.                Dim list As List(Of Integer) = values.Concat(constantValues.Skip(skipStart + length + count).Take(1)).ToList
  14.                list.Sort()
  15.                combinations.Add(list)
  16.  
  17.                '  Debug.WriteLine(String.Join(", ", values.Concat(constantValues.Skip(skipStart + length + count).Take(1)).ToArray))
  18.  
  19.                count += 1
  20.  
  21.            Loop ' count = (constantValues.Count - length)
  22.  
  23.            skipStart += 1
  24.  
  25.  
  26.        Loop ' skipStart = (constantValues.Count - length)
  27.        combinations.RemoveAll(Function(list As List(Of Integer)) list.First = 0)
  28.  
  29.        combinations.ForEach(Sub(combination As List(Of Integer))
  30.                                 ListBox2.Items.Add(String.Join(", ", From value As Integer In combination
  31.                                                                      Select If(value.ToString.Length = 1I,
  32.                                                                                value.ToString.Insert(0I, "0"c),
  33.                                                                                value.ToString)))
  34.  
  35.                                '  Label11.Text = combinations.Count.ToString()
  36.  
  37.                             End Sub)
  38.  
  39.  
  40.       '  Button4.Enabled = False
  41.  
  42.    End Sub  


saludos
Luis









En línea

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

Mensajes: 9.813



Ver Perfil
Re: Combinaciones con subrangos
« Respuesta #1 en: 25 Noviembre 2014, 12:20 pm »

Cuantas veces habré repetido que puedes utilizar LINQ para hacer practicamente lo que quieras y como quieras con una colección genérica sin apenas esfuerzo...

Ejemplo de cómo agrupar esos valores numéricos por rangos (mientras no hayan números mayores que 100) y elegir los 2 primeros valores de cada rango agrupado:
Código
  1. Public Class Form1
  2.  
  3.    Public Class GroupOfTwo
  4.        Public First As Integer
  5.        Public Last As Integer
  6.    End Class
  7.  
  8.    Private Shadows Sub Shown() Handles MyBase.Shown
  9.  
  10.        Dim constantValues As New List(Of Integer) From
  11.           {
  12.               1I, 9I, 11, 12, 14, 16, 20, 24, 35, 38,
  13.               40, 44, 50, 58, 59, 60, 68, 70, 77, 80,
  14.               81, 88, 90, 92, 99
  15.           }
  16.  
  17.        Dim groups As IEnumerable(Of GroupOfTwo) =
  18.            From value As Integer In constantValues
  19.            Group By value.ToString("00").First Into Group
  20.            Select New GroupOfTwo With
  21.                       {
  22.                         .First = Group(0),
  23.                         .Last = Group(1)
  24.                       }
  25.  
  26.        Dim sb As New System.Text.StringBuilder
  27.        For Each group As GroupOfTwo In groups
  28.            sb.AppendLine(String.Format("{0}, {1}", group.First, group.Last))
  29.        Next group
  30.  
  31.        MessageBox.Show(sb.ToString, "Grupos de dos", MessageBoxButtons.OK)
  32.  
  33.    End Sub
  34.  
  35. End Class

Saludos!


« Última modificación: 25 Noviembre 2014, 12:30 pm por Eleкtro » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Combinaciones numericas « 1 2 3 »
Hacking
Touring 25 25,458 Último mensaje 17 Febrero 2012, 00:35 am
por hcalderon11
combinaciones VB
Programación Visual Basic
vivachapas 4 7,082 Último mensaje 30 Diciembre 2008, 01:17 am
por vivachapas
Combinaciones con 54 numeros
.NET (C#, VB.NET, ASP)
mr_marley 3 9,268 Último mensaje 27 Noviembre 2011, 01:56 am
por mr_marley
otro de combinaciones
Programación C/C++
luis456 0 1,584 Último mensaje 9 Diciembre 2012, 12:01 pm
por luis456
combinaciones???
Programación C/C++
nb248077 1 1,978 Último mensaje 2 Octubre 2013, 08:23 am
por eferion
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines