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

#131
Creo a si van los tiros  :silbar:


Código (vbnet) [Seleccionar]
Dim M1 As IEnumerable(Of Integer) = pairs(1).Value.ToList
        Dim juntos2 As List(Of Integer) = M1
        juntos2.Sort()
        Me.ListBox2.Items.AddRange((From value As Integer In M1).Cast(Of Object).ToArray)   



Ya listo

Luis
#132
Cita de: Eleкtro en  7 Octubre 2015, 14:47 PM
Lo tienes perfecto tal y como está, es más productivo así.

Creo que solo necesitas un ejemplo de cómo usar el índice (no deberías necesitar un ejemplo a estas alturasss), como el siguiente, por que yo no le veo ninguna dificultad de accesibilidad adicional entre hacer esto:
Código (vbnet,2) [Seleccionar]
' Dim pairs As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of Integer))) = ...
MsgBox(String.Join(", ", pairs(0).Value))


...o hacer esto otro:
Código (vbnet,2) [Seleccionar]
' Dim col As IEnumerable(Of IEnumerable(Of Integer)) = ...
MsgBox(String.Join(", ", col(0)))


Para hacer lo segundo, cosa que repito ...es innecesario, pero bueno, tendrías que modificar el tipo de objeto que maneja la función, para devolver un IEnumerable(Of IEnumerable(Of Integer)) claro está...

Saludos!

Hola
bien es que la idea de tener cada key o valor dentro de una variable es por ejemplo pongamos el 0 :

Key: 0    Values: 1, 2, 4, 5, 6, 7, 8

nesecitaria dado el caso hacer combinaciones  con la clave o key 2

key 2     values:  20, 21, 24, 25, 26, 27, 28

ejemplo
si los concateno key 0 + key 2 = 1, 2, 4, 5, 6, 7, 8 ,20, 21, 24, 25, 26, 27, 28


No nesecito que esten todos los numeros en una variable, si no cada grupo en su respectiva
variable para yo poder hacer calculos con cada una o entre ellas  :)


Luis


#133
Bueno sigo con mis enredos aunque ya esta resuelta la pregunta ahora me encuentro en otra dimension desconocida jejej se como se convierten ya las variables pero no de este tipo


codigo

Código (vbnet) [Seleccionar]
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim valuesInt As IEnumerable(Of Integer) =
            {0, 1, 2, 4, 6, 7, 8}

        Dim pairs As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of Integer))) =
            Form1.GetPairs(valuesInt, maxValue:=80)

        For Each pair As KeyValuePair(Of Integer, IEnumerable(Of Integer)) In pairs

            ListBox1.Items.Add(String.Format("Key: {0,-4} Values: {1}", pair.Key, String.Join(", ", pair.Value)))

        Next pair

    End Sub

    Public Shared Function GetPairs(ByVal col As IEnumerable(Of Integer),
                                    Optional ByVal maxValue As Integer = Integer.MaxValue) As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of Integer)))

        If (col.Max >= 10) Then
            Throw New ArgumentException(paramName:="col", message:="El valor máximo de la colección debe ser un valor inferior a 10.")

        Else

            Return From value As Integer In col
                   Select New KeyValuePair(Of Integer, IEnumerable(Of Integer))(
                          key:=value,
                          value:=From index As Integer In Enumerable.Range(1, 9)
                                 Where (index <> value) AndAlso (CInt(value & index) <= maxValue)
                                 Select CInt(value & index))
        End If

    End Function

End Class


esto entrega estos resultados y quiero pasarlos a unas variables normalitas jejje

Key: 0    Values: 1, 2, 4, 5, 6, 7, 8
Key: 1    Values: 10, 12, 14, 15, 16, 17, 18
Key: 2    Values: 20, 21, 24, 25, 26, 27, 28
Key: 4    Values: 40, 41, 42, 45, 46, 47, 48
Key: 5    Values: 50, 51, 52, 54, 56, 57, 58
Key: 6    Values: 60, 61, 62, 64, 65, 67, 68
Key: 7    Values: 70, 71, 72, 74, 75, 76, 78
Key: 8    Values: 80, 81, 82, 84, 85, 86, 87


como puedo meter en cada variable los valores de cada key
ejemplo
variable 0 = 1, 2, 4, 5, 6, 7, 8
variable 1= 10, 12, 14, 15, 16, 17, 18
variable 2= 20, 21, 24, 25, 26, 27, 28


Luis








#134
Cita de: Eleкtro en  4 Octubre 2015, 14:59 PM
Retomando la función que te mostré aquí:
http://foro.elhacker.net/net/formar_pares_de_numeros-t442316.0.html;msg2041620#msg2041620

Le puedes añadir un parámetro opcional para limitar el valor máximo que se debe devolver.

Código (vbnet,9,20,31) [Seleccionar]
Public Class Form1

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

       Dim [color=yellow]valuesInt[/color] As IEnumerable(Of Integer) =
           {0, 1, 4, 6, 2, 8, 7}

       Dim pairs As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of Integer))) =
           Form1.GetPairs(valuesInt, maxValue:=50)

       For Each pair As KeyValuePair(Of Integer, IEnumerable(Of Integer)) In pairs

           ListBox1.Items.Add(String.Format("Key: {0,-4} Values: {1}", pair.Key, String.Join(", ", pair.Value)))

       Next pair

   End Sub

   Public Shared Function GetPairs(ByVal col As IEnumerable(Of Integer),
                                   Optional ByVal maxValue As Integer = Integer.MaxValue) As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of Integer)))

       If (col.Max >= 10) Then
           Throw New ArgumentException(paramName:="col", message:="El valor máximo de la colección debe ser un valor inferior a 10.")

       Else

           Return From value As Integer In col
                  Select New KeyValuePair(Of Integer, IEnumerable(Of Integer))(
                         key:=value,
                         value:=From index As Integer In Enumerable[color=red].Range(1, 9)[/color]
                                Where (index <> value) AndAlso (CInt(value & index) <= maxValue)
                                Select CInt(value & index))
       End If

   End Function

End Class


Saludos


Hola Elektro

No te habia respondido porque me quede dormido jejej ,bien tengo el siguiente problema con esto, ya en el anterior lo habia resuelto pero en este no se, como sabes los numeros de la variable valuesIn no mantienen la misma cantidad de numeros en cada ejecucion y estos varian. en donde esta lo de Range(1, 9) aunque en la variable haya menos numeros me toma como que si hubieran los 9 siempre


Como siempre gracias

Luis


edicto jejej creo lo resolvi pero corrigeme si estoy pelado

Código (vbnet) [Seleccionar]

            Return From value As Integer In col
                   Select New KeyValuePair(Of Integer, IEnumerable(Of Integer))(
                          key:=value,
                          value:=From index As Integer In col
                                 Where (index <> value) AndAlso (CInt(value & index) <= maxValue)
                                 Select CInt(value & index))














#135
Hola

Recien resolvi o mejor dicho me resolvieron unas dudas gracias a como siempre elektro jejej ahora vengo de nuevo con algo que lo mejor es una bobera pero ya me volvi loco buscando la solucion

Explico

tengo este codigo

Código (vbnet) [Seleccionar]
Public Class Form1

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       Dim valuesInt As IEnumerable(Of Integer) =
   {0, 1, 4, 6, 2, 8, 7}

       Dim pairs As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of Integer))) =
           From value As Integer In valuesInt
           Select New KeyValuePair(Of Integer, IEnumerable(Of Integer))(
                  key:=value,
                  value:=From index As Integer In valuesInt
                         Where index <> Integer.Parse(CStr(value).Last)
                         Select CInt(value & index))

       For Each pair As KeyValuePair(Of Integer, IEnumerable(Of Integer)) In pairs

           ListBox1.Items.Add(String.Format("Key: {0,-4} Values: {1}", pair.Key, String.Join(", ", pair.Value)))

       Next pair
   End Sub
End Class



lo que no puedo hacer una limitacion de los resultados o sea que si los numeros muestran del 01 al 89 y yo quiera mostrar solo desde el 01 al 50 ,no se ya que tampoco he logrado pasar estos resultados a otra variable que yo pueda o conosca manejar ya que con "pair.Key " no tengo ide de como manejar esto .


Luis








#136
 Habia un detalle pero lo resolvi



value:=From index As Integer In Enumerable.Range(1, 9) <--me tomaba estos valores

value:=From index As Integer In valuesInt  <-------corregido :)


luis
#137
Cita de: Eleкtro en  1 Octubre 2015, 14:35 PM
De nada, pero déjame hacerte un consejo, ¿sabes lo que estaría muy bien que hagas?, un módulo donde definir todas esas funciones para tus propósitos, que seguro son muchas funciones ya en todo este tiempo... y así, aparte de reducir código, no llenarías tanto código para volverlo un código spaghetti.

Hazme caso, no se si aceptarás mi sugerencia, en caso de que lo hagas no se si al principio pensarás que no te vale la pena (por que creo que te cuesta bastante escribir xD), pero a la larga si, sobre todo para la depuración de posibles fallos, joder, que ahora mismo lo tienes todo mezclao por todos laos.

Incluso podrías crear extensiones de método para ganar mayor simplificación de código.

Un ejemplo inicial:

Código (vbnet) [Seleccionar]
Dim pairs As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of String))) =
   {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}.GetPairs()

For Each pair As KeyValuePair(Of Integer, IEnumerable(Of String)) In pairs

   ListBox1.Items.Add(String.Format("Key: {0,-4} Values: {1}", pair.Key, String.Join(", ", pair.Value)))

Next pair


+

Código (vbnet) [Seleccionar]
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Runtime.CompilerServices

Module IEnumerableExtensions

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Descripción de lo que hace esta función.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <param name="sender">
   ''' La colección de origen.
   ''' </param>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <returns>
   ''' Descripción delo que devuelve esta función.
   ''' </returns>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <exception cref="ArgumentException">
   ''' El valor máximo de la colección debe ser un valor inferior a 10.;col
   ''' </exception>
   ''' ----------------------------------------------------------------------------------------------------
   <Extension>
   <DebuggerHidden>
   <DebuggerStepThrough>
   Public Function GetPairs(ByVal sender As IEnumerable(Of Integer)) As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of String)))

       If (sender.Max >= 10) Then
           Throw New ArgumentException(paramName:="col", message:="El valor máximo de la colección debe ser un valor inferior a 10.")

       Else
           Return From value As Integer In sender
                  Select New KeyValuePair(Of Integer, IEnumerable(Of String))(
                         key:=value,
                         value:=From index As Integer In Enumerable.Range(1, 9)
                                Where (index <> value)
                                Select (value & index))
       End If

   End Function

End Module


Saludos


Sabes que si acepto consejos jejej y el que no lo haga esta frito jeje lo de escribir mucho ya sabes ... Yo poco ... no mentira eso que me dices lo hacia ya en Foxpro, era un archivo de todas las rutinas que despues yo llamaba desde el prg principal con un selet ,pero ya sabes que ahora todo me cuesta mas y me enredo mucho  y si a duras penas voy con esto . no tendria ni idea como llamar esas funciones desde el archivo principal tratere de irme empapando con eso :)

Y gracias muchas gracias por todo :)

Luis



#138
Asi me funciona  ;-)


Código (vbnet) [Seleccionar]
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim valuesInt As IEnumerable(Of Integer) =
    {0, 1, 3, 4, 6, 2, 5, 8, 7, 9}

        Dim pairs As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of Integer))) =
            From value As Integer In valuesInt
            Select New KeyValuePair(Of Integer, IEnumerable(Of Integer))(
                   key:=value,
                   value:=From index As Integer In Enumerable.Range(1, 9)
                          Where index <> Integer.Parse(CStr(value).Last)
                          Select CInt(value & index))

        For Each pair As KeyValuePair(Of Integer, IEnumerable(Of Integer)) In pairs

         
            ListBox1.Items.Add(String.Format("Key: {0,-4} Values: {1}", pair.Key, String.Join(", ", pair.Value)))

        Next pair
    End Sub
End Class   



Gracias elektro :)

Luis

#139
Bien trato de hacerme entender

" ¿que pasa si el numero es 10, o 152, o 25095, o 123456789?, ¿qué se debe hacer entonces?. "

los numeros no pasan nunca de 10 y  oscilan entre esa cantidad entre 1 y 9 
entonces la  :

" Key: 10   Values: 101, 102, 103, 104, 105, 106, 107, 108, 109 "  <---- no debe salir ya que lo maximo  es hasta el 09 

como lo pusiste esta bien hasta el numero 98 .


Realmente los numeros son desde el 01 hasta el 09 otro despieste mio al poner 10 ;(  suelo enredarme mucho con otras cosas,
pero conte 10 porque faltan estos numeros  se cuentan tambien pero asi :

esto deberia quedar de esta forma

Key: 0   Values:  01  02  03  04  05 06 07 08 09
Key: 1    Values: 12, 13, 14, 15, 16, 17, 18, 19
Key: 3    Values: 31, 32, 34, 35, 36, 37, 38, 39
Key: 4    Values: 41, 42, 43, 45, 46, 47, 48, 49
Key: 6    Values: 61, 62, 63, 64, 65, 67, 68, 69
Key: 2    Values: 21, 23, 24, 25, 26, 27, 28, 29
Key: 5    Values: 51, 52, 53, 54, 56, 57, 58, 59
Key: 8    Values: 81, 82, 83, 84, 85, 86, 87, 89
Key: 7    Values: 71, 72, 73, 74, 75, 76, 78, 79
Key: 9    Values: 91, 92, 93, 94, 95, 96, 97, 98




saludos
luis




#140
Cita de: Eleкtro en  1 Octubre 2015, 11:19 AM
Hola Luis

No se entiende muy bien lo que necesitas, pero si no me equivoco lo que quieres hacer es añadir ceros a la izquierda a los números menores de 10, para que estos formen una logintud de 2 caracteres, par.

Código (vbnet) [Seleccionar]
Dim valuesInt As IEnumerable(Of Integer) =
   {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

Dim valuesStr As IEnumerable(Of String) =
   From value As Integer In valuesInt
   Select CStr(value).PadLeft(totalWidth:=2, paddingChar:="0"c)

Console.WriteLine(String.Join(", ", valuesStr))


Resultado de ejecución:
Saludos


Hola elektro gusto en saludarte :)


no es lo que busco jejej . es formar o combinar numeros con numeros

estos son los numeros que tengo en la variable y debo de combinarlos entre ellos formando parejas de dos digitos

1, 2, 3, 4, 5, 6, 7, 8, 9, 10

salida
puse cero por constumbre :(

1
2
3
4
5
6
7
8
9


ahora tomamos el numero 1 y lo combinamos con los demas numeros
12
13
14
15
16
17
18
19

seguimos con el numero 2
21
23
24
25
26
27
28
29

seguimos con el tres
31
32
34
35
36
37
38
39

Y haci hasta acabar con el ultimo numero de la secuencia o sea el 9

Ya me habia desacostumbrado a explicarme mejor jejej

Luis