Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - luis456

#151
Bueno mientras no me jales de las orejas,de las patillas ,no me des con la regla en los dedos ni me pongas de rodillas con una tapas de refrescos jejej como era antes,  :silbar:

bueno aca esta la version cortita :)

Código (vbnet) [Seleccionar]
Public Class Form1
    ReadOnly MAX As Integer = 99
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


        Dim arregloSumasa() As Integer = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21}



        Dim split As IEnumerable(Of IEnumerable(Of Integer)) =
          SplitIntoParts(collection:=arregloSumasa, amount:=2, fillEmpty:=True)

        ' *****************************************************************************************************
        Dim Bz990 As IEnumerable(Of Integer) =
(
From Value As Integer In split(0).Concat(split(1)).Concat(split(2)).Concat(split(3)).Concat(split(4))
Where (Value <= MAX AndAlso Value > 0)).Distinct

       
        Dim Sl990 As IEnumerable(Of Integer) = Bz990
        Dim SM990 As List(Of Integer) = Bz990.Take(10).ToList
        SM990.Sort()

        Me.ListBox1.Items.AddRange((From value As Integer In SM990 Where value <> 0).Cast(Of Object).ToArray)
        ' *******************************************************************************************************
        'este codigo ahora
        ' muestra -------> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

        ' yo quiero mostrar --> 1, 3, 5, 7, 9, 11,13,15,17, 19 <--- ojo no son numeros pares ni impares, es por posiciones
        ' yo quiero mostrar --> 2, 4, 6, 8, 10, 12,14,16,18.20 <---estan ordenados para el ejemplo




    End Sub
    Public Shared Function SplitIntoParts(Of T)(ByVal collection As IEnumerable(Of T),
                                                 ByVal amount As Integer,
                                                 ByVal fillEmpty As Boolean) As IEnumerable(Of IEnumerable(Of T))

        Return From index As Integer In Enumerable.Range(0, CInt(Math.Ceiling(collection.Count() / amount)))
               Select If(Not fillEmpty,
                         collection.Skip(index * amount).Take(amount),
                         If((collection.Count() - (index * amount)) >= amount,
                            collection.Skip(index * amount).Take(amount),
                            collection.Skip(index * amount).Take(amount).
                                                            Concat(From i As Integer
                                                                   In Enumerable.Range(0, amount - (collection.Count() - (index * amount)))
                                                                   Select DirectCast(Nothing, T))))

    End Function
#152
Cita de: SergioE en 25 Mayo 2015, 17:52 PM
Gracias, estoy aprendiendo mucho en este foro.
Soy novato en esto del .NET


Si hay muy buenos profresores  en este foro ,algunos medio cascarabias pero bien :) jejej en esto de net he aprendido mucho gracias a ellos

Luis 
#153
otro intento pero nunca he liado con esto . y esta funcion me parece que es la que me serviria


el operador '<<' no está definido para los tipos 'System.Collections.Generic.List(Of Integer)' y 'Integer'.


Código (vbnet) [Seleccionar]
  Dim var As IEnumerable(Of Integer) = {15, 45, 48, 47, 33, 43, 60, 65, 88}
        Dim shift As Integer = 2

        Dim Sl As IEnumerable(Of Integer) = var
        Dim SM As List(Of Integer) = var.ToList

        SM <<= shift

        Me.ListBox2.Items.AddRange((From value As Integer In SM Where value <> 0).Cast(Of Object).ToArray) 
#154
Cita de: luis456 en 22 Mayo 2015, 18:29 PM
A si estaria Bien :)

lo estoy probando pero tengo que quitar unas claves ya que me da conflito o este error pero ya creo saber que tengo que eliminar

error

No se puede convertir un objeto de tipo '<ConcatIterator>d__71`1[System.String]' al tipo 'System.Collections.Generic.IEnumerable`1[System.Int32]'.

esto es lo que he echo :)


Código (vbnet) [Seleccionar]
Dim suma = From num In alia1 _
                         Select num

        For num As Integer = 0 To 99 Step 2

            Dim split As IEnumerable(Of IEnumerable(Of Integer)) =
        SplitIntoParts(collection:=suma, amount:=2, fillEmpty:=True)

        Next num



Luis




elimine el error pero no funciona como quiero, me corta el arreglo :( y me deja las combinaciones sin numeros para completar los diez numeros ?????


Luis






#155
A si estaria Bien :)

lo estoy probando pero tengo que quitar unas claves ya que me da conflito o este error pero ya creo saber que tengo que eliminar

error

No se puede convertir un objeto de tipo '<ConcatIterator>d__71`1[System.String]' al tipo 'System.Collections.Generic.IEnumerable`1[System.Int32]'.

esto es lo que he echo :)


Código (vbnet) [Seleccionar]
Dim suma = From num In alia1 _
                         Select num

        For num As Integer = 0 To 99 Step 2

            Dim split As IEnumerable(Of IEnumerable(Of Integer)) =
        SplitIntoParts(collection:=suma, amount:=2, fillEmpty:=True)

        Next num



Luis




#156
Hola a todos

en un arreglo de numeros de x cantidad de numeros, siempre el famoso 01 al 99 :) yo formo grupos de numeros de 10 numeros

concatenando splist o variables de dos numeros cada uno de ese arreglo de esta manera:

Código (vbnet) [Seleccionar]
  Dim Bz1 As IEnumerable(Of Integer) =
(
From Value As Integer In split(1).Concat(split(2).Concat(split(3)).Concat(split(4)).Concat(split(5)))
Where (Value <= MAX AndAlso Value > 0)).Distinct

       
        Dim Sl1 As IEnumerable(Of Integer) = Bz1
        Dim SM1 As List(Of Integer) = Bz1.toList
        SM1.Sort()
       
       Me.ListBox2.Items.AddRange((From value As Integer In SM1 Where value <> 0).Cast(Of Object).ToArray)



Bien esto funciona bien el problema que quiero resolver es que tiene correlatividad de numeros.


arreglo principal ( 01 02 03 04 05 06 07 08 09 10 ....................99)

este codigo muestra este resultado

01 02 03 04 05 06 07 08 09 10

Porque al ordenarse el arreglo los splits o variables enpiezan desde el principio del arreglo

split(1) = 01 02
split(2) = 03 04
split(3) = 05 06
split(4) = 07 08
split(5) = 09 10



estos split los saco de esta funcion que toma los valores del arreglo principal


Código (vbnet) [Seleccionar]
Dim split As IEnumerable(Of IEnumerable(Of Integer)) =
        SplitIntoParts(collection:=alia1, amount:=2, fillEmpty:=True)



en definitiva lo que nesecito es hacer saltos de numeros intermedios de los numeros contenidos en los split

ejemplo
ahora es de esta forma

split(1) = 01 02
split(2) = 03 04
split(3) = 05 06
split(4) = 07 08
split(5) = 09 10
******************
y lo nesecito de esta forma

split(1) = 01 03
split(2) = 02 04
split(3) = 05 07
split(4) = 06 08
split(5) = 08 10


Bueno antes de preguntar he usado take,skip sin resultados :) con la clausula Where no se plantear el problema

claro esta que si volvemos a unir los split como estan ahora y despues, se formaria la misma combinacion pero lo puse a si para el ejemplo ya que las concatenaciones cambian de forma que haga otras numeraciones :)


Luis



#157
 :rolleyes: :rolleyes: :rolleyes: es que la duda que tenia era con la logica  ;( si col tiene la coleccion completa de col1,,etc  era como contaria los numeros de col1 ??? bueno creo me entiendes , lo bueno es que por fin pude consultar los 100 ejemplos de linq: que me pasaste en su dia :)  y ahora preguntare menos jejejje (espero :(  ) vi muchas rutinas que me hacen falta ;)

Gracias :)

Luis
#158
Hola con pistas tampoco doy porque he mirado le que hay en msd y no se como contar o mirar dentro de los col1 ,col2... que estan  a su ves en el grupo cols

ya que si hago esta (prueba) me cuenta es el total de col y no los que estan dentro de col1

Código (vbnet) [Seleccionar]
  ' eliminar registros iguales en  " Lnumbers " lo solucione quitandolos del listxbo
    ' eliminar registros MENORES a MAX
    ' En este codigo deberia quedar un solo registro de los cuatro

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim col1 As IEnumerable(Of Integer) = {1, 5, 6, 7, 8, 9, 10, 11, 15, 80}
        Dim col2 As IEnumerable(Of Integer) = {1, 5, 6, 7, 8, 9, 10, 11, 85}
        Dim col3 As IEnumerable(Of Integer) = {1, 2, 8, 6, 9}
        Dim col4 As IEnumerable(Of Integer) = {2, 2, 3}
        Dim MAX As Integer = 10


        Dim cols As IEnumerable(Of IEnumerable(Of String)) =
            From col As IEnumerable(Of Integer) In {col1, col2, col3, col4}
            Group By String.Join("", col).AsEnumerable
            Into Group
            Select From value As Integer In Group.First.Distinct
                    Where Not (value = MAX)
                   Select value.ToString(format:="0#")

        ListBox1.Items.AddRange((From col As IEnumerable(Of String) In cols Select String.Join(", ", col)).ToArray)
        '*****************************************preubas**********------------------------------------------------
        Dim cuenta As Integer = cols.Count()
        MsgBox(cols.Count) lleva cuatro bien
        MsgBox(col1.Count) lleva 10 numeros bien
        MsgBox(col2.Count) lleva 9 mal eliminar


luis


#159
Bueno si y no jejje

a si es ahora como entrega los resultados
01, 05, 06, 07, 08, 09, 10 ,20 ,80, 88
01, 02, 08, 06, 09 <-----eliminar ya que tiene que tener 10 numeros
02, 03<-------------------eliminar ya que tiene que tener 10 numeros


pero debe solo quedar asi , solo los registros completos que cumplan la condicion de 10 registros ( disculpas no habia contado bien jeje)

01, 05, 06, 07, 08, 09, 10,20,80,88

Código (vbnet) [Seleccionar]
Dim col1 As IEnumerable(Of Integer) = {1, 5, 6, 7, 8, 9, 10, 11, 15, 80}
       Dim col2 As IEnumerable(Of Integer) = {1, 5, 6, 7, 8, 9, 10, 11, 85}
       Dim col3 As IEnumerable(Of Integer) = {1, 2, 8, 6, 9}
       Dim col4 As IEnumerable(Of Integer) = {2, 2, 3}
       Dim MAX As Integer = 10


Gracias :)



Luis
#160
Cita de: Eleкtro en 30 Abril 2015, 20:39 PM
Especifica claramente lo de los duplicados, dices que en este ejemplo solo debe quedar una secuencia (o eso entiendo por "registro"), ¿cual?, y ¿por qué?.

¿Quieres dscartar los valores duplicados entre cada decuencia?, ¿o quieres descartar la secuencia entera en caso de que algún valor esté repetido con los valores de otra de las secuencias?, por que ambas cosas son muy distintas.

Da más detalles

Saludos


eliminar de la lista los resultados como te muestro


01, 03, 04, 05, 06, 08<----X
01, 03, 04, 05, 06, 08 <----repite con el anterior
01, 03, 04, 05, 09, 30
01, 03, 04, 05, 30, 30 <----X
01, 03, 04, 05, 30, 40 <----repite con el anterior
01, 03, 04, 05, 30, 40 <----repite con el anterior
01, 03, 04, 06, 07 <--------no llega a la cantidad
01, 03, 04,<----------------no llega a la cantidad 
01, 03, 04, 06, 08, 09
01, 03, 04, 06, 08, 27
01, 03, 04, 06, 08, 49
01, 03, 04, 06, 12<--------no llega a la cantidad

es eliminar los que sean iguales claro esta dejando uno solo de los que repiten :)
y los que no llegan a tener la cantida establecida eliminarlos.

aca van dos numeros estos si eliminar ya que son iguales en todo Y dejar un solo registro

01, 03, 04, 05, 30, 40 <----
01, 03, 04, 05, 30, 40 <----repite con el anterior


estos dejar ya que son diferentes aunque sea un solo numero

01, 03, 04, 05, 30, 40
01, 03, 04, 05, 30, 80

eliminar repetidos y que no cumplan la cantida establecida que seria MAX=10