Autor
|
Tema: Mis malas combinaciones :( (Leído 22,107 veces)
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.810
|
lo que busco es ordenar las combinaciones que se muestran en el listbox ordenados de menor a mayor Con esto ordenas las combinaciones de menor a mayor: Dim Sorted As List(Of List(Of Integer)) = (From combo As List(Of Integer) In Combos Order By Convert.ToInt64(String.Join("", combo)) Ascending).ToList
Pero eso no es suficiente, sería algo más complicado de hacer ya que las combinaciones no tienen la misma longitud, los "0" son un añadido después. Lo mejor es que olvides eso de ordenarlas tú y dejes que el listbox ordene los items por ti: ListBox1.Sorted = True
Saludos.
|
|
« Última modificación: 26 Agosto 2014, 20:37 pm por Eleкtro »
|
En línea
|
|
|
|
luis456
Desconectado
Mensajes: 548
|
Hola Cuando me dices que pruebe con " ListBox1.Sorted = True " lo hice en diseño o propiedad del listbox y nada tambien lo puse en el codigo y nada Combos.ForEach(Sub(comb As List(Of Integer)) ' Convierto la Lista a 'String', le añado los ceros, y añado el string formateado al Listbox. ListBox1.Items.Add(String.Join(", ", From value As String In comb Select If(value.Length = 1I, value.Insert(0I, "0"c), value))) ListBox1.Sorted = True End Sub)
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.810
|
nada tambien lo puse en el codigo y nada No se que significa "nada", Luis. Mira la imagen de mi último comentario, están las combinaciones ordenadas de menor a mayor, ¿ves alguna diferencia entre ese "output" y el que tu obtienes?, da más detalles, si el código es el que me pasaste y no le has echo modificaciones en este rato entonces tendría que funcionar. Con que actives la propiedad una sola vez (sea donde sea) es suficiente, sácala del foreach porque la estás activando una y otra vez, de todas formas eso no supondría un problema, pero es innecesario. saludos
|
|
|
En línea
|
|
|
|
luis456
Desconectado
Mensajes: 548
|
No me sale y nada significa que no me ordena las combinaciones Public Class LuisClass_v2 ReadOnly Randomizer As New Random ' Num ReadOnly FixedValues As Integer() = ' Num Enumerable.Range(1I, 49I).ToArray ' 1 to 30 ReadOnly FixedValues As Integer() = {1, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50} ReadOnly RandomValues As Integer() = Enumerable.Range(FixedValues.First, FixedValues.Last).ToArray ' 1 to 30 Dim Combo As List(Of Integer) = Nothing Dim Combos As New List(Of List(Of Integer)) Private Sub Test() Handles MyBase.Shown Dim IndexCounter As Integer = FixedValues.First ' 1 Dim LenCounter As Integer = 0I Const NumStep As Integer = 3I Const NumLen As Integer = 10I Do Until IndexCounter > FixedValues.Last ' IndexCounter > 30 Combo = New List(Of Integer) For Num As Integer = IndexCounter To (FixedValues.Count) Step NumStep LenCounter += 1I Combo.Add(FixedValues(Num - 1I)) If LenCounter >= NumLen Then Exit For End If Next Num If LenCounter < NumLen Then ' If LenCounter < 10 For RandomNum As Integer = 1I To (NumLen - LenCounter) Dim n As Integer = Randomizer.Next(RandomValues.First, RandomValues.Last) Do Until Not Combo.Contains(n) n = Randomizer.Next(RandomValues.First, RandomValues.Last) Loop Combo.Add(n) Next ' RandomNum End If ' LenCounter < NumLen Debug. WriteLine(String. Join(", ", Combo )) ' Stop #End If Combos.Add(Combo) IndexCounter += 1I LenCounter = 0I Loop ' IndexCounter >= FixedValues.Last ' ******** ordenamiento------------- ' Dim values As Integer() = (From n As Integer In Combos Order By n Ascending).ToArray ' ******** ' Listbox: ' ******** Combos.ForEach(Sub(comb As List(Of Integer)) ' Convierto la Lista a 'String', le añado los ceros, y añado el string formateado al Listbox. ListBox1.Items.Add(String.Join(", ", From value As String In comb Select If(value.Length = 1I, value.Insert(0I, "0"c), value))) ListBox1.Sorted = True End Sub) End Sub ' Test End Class
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.810
|
A mi me las ordena, Luis.
Creo que tu te estás refiriendo que además de ordenar la lista que contiene las combinaciones (de menos a mayor), ¿quieres ordenar los números de cada combinacion, por separado?.
saludos
|
|
|
En línea
|
|
|
|
luis456
Desconectado
Mensajes: 548
|
Hola
Lo que me refiero es que cada combinación este ordenada de menor a mayor
Tomo una combinación que me da el programa y veras que esta desordenada
01 15 30 45 49 10 39 28 04 03 <-- asi me los pone el código ahora
01 03 04 10 15 28 30 39 45 49 <---asi es que quiero ordenarlos
Luis
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.810
|
Lo que me refiero es que cada combinación este ordenada de menor a mayor Entonces, antes de añadir la combinación ( Combo) a la lista de combinaciones ( Combos), ordénala usando el método Sort. Combo.Sort() ' <---- aquí ordeno la combinación actual. Combos.Add(Combo) ' <---- aquí añado la combinación ordenada al resto de combinaciones. ' y aquí sigo con el código como estaba... IndexCounter += 1I LenCounter = 0I etc...
saludos
|
|
|
En línea
|
|
|
|
luis456
Desconectado
Mensajes: 548
|
Listo funciona como quería Muchas gracias elektro Luis ( nos levantamos pronto ee)
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
luis456
Desconectado
Mensajes: 548
|
Como contar cuantas combinaciones hay en el listbox ? Buscando encontre esta rutina funciona pero lo que hace es comparar las combinaciones y decirme que solo hay una combinacion eso lo sabemos ya que el pograma no da repetidos nesecito saber cuantas hay en total. contar y mostrar " Combinaciones = 30 " o la cantidad que salgan codigo que encontre a alguien le puede servir para comparar registros ' contar que no ay repetidos Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click Dim query = From item As String In ListBox1.Items.Cast(Of String)() _ Order By item _ Group By item = item _ Into Total = Group, Count() _ Select Total Dim msg As New System.Text.StringBuilder() For Each item In query msg.AppendLine(String.Format("Combinaciones {0} existen {1}", item(0), item.Count)) Next MessageBox.Show(msg.ToString()) End Sub
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
luis456
Desconectado
Mensajes: 548
|
Solucionado Label1.Text = CStr(ListBox1.Items.Count)
luis
|
|
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Instrucciones malas :P
Ingeniería Inversa
|
x64core
|
3
|
2,902
|
7 Diciembre 2011, 16:45 pm
por Flamer
|
|
|
Combinaciones con subrangos
.NET (C#, VB.NET, ASP)
|
luis456
|
1
|
1,679
|
25 Noviembre 2014, 12:20 pm
por Eleкtro
|
|
|
Usuarios de Yelp bombardean pizzería antigay con malas reseñas
« 1 2 3 4 5 »
Noticias
|
wolfbcn
|
47
|
11,047
|
5 Abril 2015, 03:10 am
por MinusFour
|
|
|
Mas combinaciones condicionadas
.NET (C#, VB.NET, ASP)
|
luis456
|
0
|
1,326
|
5 Abril 2016, 11:42 am
por luis456
|
|
|
Vulnerabilidades por malas practicas streaming
Bugs y Exploits
|
neftali.evando88
|
5
|
7,163
|
23 Octubre 2020, 20:44 pm
por MCKSys Argentina
|
|