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 - Serapis

#501
Cita de: K-YreX en  2 Mayo 2021, 14:28 PM
No me refería a que se complicase el código (que entiendo que el tuyo es más extenso por haber incluido código de la interfaz) sino a lo de mantener la distancia entre los números y generar números con dígitos que no están entre los introducidos.
Ok... creí que te referías al código.

Cita de: K-YreX en  2 Mayo 2021, 14:28 PM
Al final ha resultado que yo tampoco lo estaba terminando de entender pero creo que ahora ya sí.A mí entender, una vez tienes todos los grupos posibles (menores a 49) de 2 dígitos con los dígitos dados, hay que crear digamos filas combinando 6 de esos grupos.
Sí. Yo entendí una cosa claramente al comienzo, pero cuando luego dijo una frase, que 'no encajaba', entonces percibí que podría estar queriendo algo distinto, aunque no tan distinto.
Resulta confuso, colocar dos parámetros con distinta aplicación semántica como si fueran uno solo y mismo.
Aún quedaban algunas dudas anoche, que no respondió... Hace un rato al volver a mirar, veo en los ejemplos son lo suficientemente explícitos para deducir que finalmente quiere formar las dos combinaciones que faltan poniendo como unidad uno de los valores de las decenas si es preciso...




Yo lo he resuleto de la siguiente manera (hay varias, una es como ha hecho K-YreX, con varios bucles anidados, en cada bucle se opera solo con el carácter en la posición solicitada)...

Sean el Alfabeto los dos grupos de valores, llamémoslo: X,Y,  y   R,S,T,U
Solo hay 8 pares de combinaciones: Resultado de combinar cada uno del 'Grupo de Decenas' con cada uno del 'Grupo de Unidades'
   XR, XS, XT, XU  (0,1,2,3)
   YR, YS, YT, YU  (4,5,6,7)
Más las 2 combinaciones de intercambiar de posicion los valores del 'grupo de Decimales'
   XY, YX       (8,9) 
Cada par de esos 10 se enumeran ahora como 0-9 (como se ve a su derecha), el orden seguido iniciamente era el ahí mostrado (0,1,2,3), pero luego para mantener un orden lo más exacto posible a como aparece en el ejemplo de muestra, en el código se ha variado el orden (he dejado comentado (dos conjuntos distintos)). Ahora, por tanto nos basta reconocer cada par con 1 solo carácter en el rango 0-9.

La cantidad de combinaciones totales sería: (10*9*8*7) * (6*5) = 151.200, ahora bien ese es el caso de no poner restricciones a X e Y (como solo toman valores 0-4), se recalcula como: (10*9*8*7) * (5*4) = 5040 * 20 = 100.800 Esa cifra tampoco es definitiva, porque cuando X ó Y son 0, ni R, ni S, ni T, ni U pueden valer 0, luego habría que descontar algunas... como el problema no es calcular dicho valor exacto, lo dejamos ahí que es bastante aproximado.
Ahora, como las combinaciones son tomadas de 6 en 6, el numero de combinaciones con esos 10 pares tomados de 6 en 6 son solo: 210.
Primero calculamos esas combinaciones que permanecerán estáticas en un array durante la vida del programa... y luego con los valores recibidos lo que se hará es transformar cada una de esas combinaciones conforme a los valores recibidos.

El código para mostrar en el listado esas 210 combinaciones se deja comentado (con un botón aparte una vez abierta la ventana se pueden mostrar en el listbox, pero vamos resumiendo van desde 012345 hasta 456789, ninguna de las combinaciones a partir de la inicial es menor que la previa, y así se llega a todas ellas).

Ahora el código con breves explicaciones (a las ya dadas) y alguna captura...
La ventana recurre a una clase, que crea las 210 permutaciones y que luego dado un índice realiza la transformación.
El código de la interfaz, trata simplemente de tomar el string del textbox y convertirlo en los parámetros que debe recibir la función de transformación. No se ha hecho nada especial para verificar que el string del textbox sea correcto, básicamente cada valor debe debe estar separado por una coma (opcionalmente con espacios).

Código (vbnet) [Seleccionar]

Imports System.Text

Public Class Form1
    Private Permuta As New Permutaciones
    Private Decenas(2) As Byte, Unidades(4) As Byte

   
    ' El botón de la interfaz...
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Nums() As String, txt As String
        Dim k As UInt16

        txt = TextBox1.Text.Replace(" ", "")
        Nums = txt.Split(",")
        If (Nums.Length = 6) Then
            ' crear los parámetros para la funcion de Transformacion:
            Decenas(0) = System.Byte.Parse(Nums(0))
            Decenas(1) = System.Byte.Parse(Nums(1))
            For k = 2 To 5
                Unidades(k - 2) = System.Byte.Parse(Nums(k))
            Next

            ListBox1.Items.Clear()
            For j = 0 To Permuta.Cantidad - 1
                ListBox1.Items.Add(Permuta.Transforma(j, Decenas, Unidades))
            Next
            Label3.Text = "Cantidad en lista: " & ListBox1.Items.Count.ToString
        Else
            MessageBox.Show("No, no no... Debe haber 6 y solo 6 numeros, separados por 1 coma...")
        End If
    End Sub



Private Class Permutaciones
        Const MAX_COMBINAS As UInt16 = 210
        Private s_Combinas(MAX_COMBINAS) As UInt32 

        Public ReadOnly Property Cantidad As UInt16
            Get
                Return MAX_COMBINAS
            End Get
        End Property

        Public Function Transforma(ByVal Indice As UInt16, ByVal Dec() As Byte, ByVal Uni() As Byte) As String
            Dim permuta As UInt32 = s_Combinas(Indice)
            Dim s As String = "", valor As String = ""
            Dim x As Byte = 0, k As Byte

            For k = 0 To 5
                x = (permuta Mod 10)
                permuta \= 10

                Select Case x
                    ' forma C en que quedan ordenados más aproximado al ejemplo de muestra...
                    Case 0 : x = ((Dec(0) * 10) + Dec(1))                   
                    Case 1 To 4 : x = ((Dec(0) * 10) + Uni(x - 1))
                    Case 5 To 8 : x = ((Dec(1) * 10) + Uni(x - 5))
                    Case 9 : x = ((Dec(1) * 10) + Dec(0))

                    ' Otra forma B en que quedan ordenados...
                        'Case 0 : x = ((Dec(0) * 10) + Dec(1))
                        'Case 1 : x = ((Dec(1) * 10) + Dec(0))
                        'Case 2 To 5 : x = ((Dec(0) * 10) + Uni(x - 2))
                        'Case 6 To 9 : x = ((Dec(1) * 10) + Uni(x - 6))

                    ' Otra forma A en que quedan ordenados...
                        'Case 0 To 3 : x = ((Dec(0) * 10) + Uni(x))
                        'Case 4 To 7 : x = ((Dec(1) * 10) + Uni(x - 4))
                        'Case 8 : x = ((Dec(0) * 10) + Dec(1))
                        'Case 9 : x = ((Dec(1) * 10) + Dec(0))
                End Select

                If (x < 10) Then s = "0" & x.ToString Else s = x.ToString
                valor = (s & ", ") & valor
            Next

            Return valor
        End Function


        ' Genera todas las permutaciones posibles (210) en formato numerico.
        ' Alfabeto = X,Y,   R,S,T,U
        ' solo hay 8 pares de combinaciones: Resultado de combinar cada uno del GrupoDec con cada uno del GrupoUni
        '   XR, XS, XT, XU  (0,1,2,3)
        '   YR, YS, YT, YU  (4,5,6,7)
        '  Más las 2 combinaciones de intercambiar de posicion los valores del 'grupoDec'
        '   XY, YX          (8,9) 
        ' Cada par de esos 10 se enumeran ahora como 0-9 (usando una solo caracter)
        ' Ahora el numero de combinaciones con esos 10 pares tomados de 6 en 6 son: 210
        Public Sub New()
            Dim combina As UInteger = 12345       ' combinacion inicial
            Dim final As UInteger = 456789           '  combinación final
            Dim k As UInt16
            Dim digitos(0 To 5) As Byte, n As Byte  ' control de límite de cada dígito.

            For k = 0 To 5
                digitos(k) = k
            Next

            k = 0
            Do
                s_Combinas(k) = combina
                If (digitos(5) = 9) Then
                    n = 4
                    Do While digitos(n) = digitos(n + 1) - 1
                        n -= 1
                    Loop
                    digitos(n) += 1
                    For n = n + 1 To 5
                        digitos(n) = digitos(n - 1) + 1
                    Next
                    combina = 0
                    For n = 0 To 5
                        combina += digitos(n) * (10 ^ (5 - n))
                    Next
                Else
                    combina += 1 : digitos(5) += 1
                End If
                k += 1
            Loop While (combina < final)
            s_Combinas(k) = combina
        End Sub

        'Public ReadOnly Property Permuta(ByVal X As UInt16)
        '    Get
        '        Return s_Combinas(X)
        '    End Get
        'End Property
    End Class

' Mostras la lista de permutaciones en el listbox.... va en conjunto con la propiedad 'Permuta' de la clase permutaciones.
'Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    '    Dim k As UInt16, j As UInt32, s As String = ""

    '    ListBox1.Items.Clear()
    '    For k = 0 To Permuta.Cantidad - 1
    '        j = (Permuta.Permuta(k))
    '        If (j < 123456) Then s = "0" & j.ToString Else s = j.ToString
    '        ListBox1.Items.Add(s)
    '    Next
    'End Sub
End Class


Las combinaciones numéricas podrían guardarse a fichero una vez, borrar la función actual para ser remplazada por una que se lea de fichero (requiere menos líneas, pero no merece el esfuerzo solo para ahorrarse una docena de líneas y dejar opaco como se han generado dichas combinaciones)...

X e Y, no deberían ser ambos 0, y si uno de ellos es 0 y otro del otro grupo es 0, habrá combinaciones ilegales (no se filtran, pero es fácil reconocerlas porque un valor de dicha combinación tendrá el valor '00', que como se sabe no forma parte de las 'apuestas' que permite la 'primitiva' (01-49).
Se podría mejorar la interfaz, poniendo sendos controles para cada dígito, para permitir que cada variable tome un valor en el rango posible (X e y en el rango 0-4 y RSTU en el rango 0-9) y limitarlo de forma exclusiva, de modo que cuando se elija por ejemplo para R el 5, se desactive para S,T y U el 5, etc... así no puede haber valores repetidos.
Pero vamos si quien lo usa lo hace con criterio, se supone que sabrá evitar valores ilegales.... queda como ejercicio del interesado cualquier cambio en la simple intrfaz, o al menos no tomar como válidas las combinaciones donde aparezca el par no legal '00', lo que es trivial... y básicamente no merece esfuerzo invertir en modificar la interfaz para ello (otra cosa es que debiera pasarse a un tercero sin idea de lo que debe y no debe introducir).

Y  finalmente una captura con el ejemplo de muestra de Luis456: 2, 3, 5,6,8, 9
#502
Cita de: B€T€B€ en  1 Mayo 2021, 23:55 PM
Me equivoque cambiando micrófono por altavoces.
No pasa nada, a todos se nos cuela un equívoco...

Cita de: B€T€B€ en  1 Mayo 2021, 23:55 PM
Puede que algún día sea una realidad.
No llego a los 40 años, y dudo que lo vean mis ojos; llámame incrédulo.
Yo soy mucho mayor que tú y confío en poderlo 'ver'... antes de que 'el destino me alcance'.

Cita de: B€T€B€ en  1 Mayo 2021, 23:55 PM
Otro apunte que quería realizar en relación al tema es que en ocasiones un proceso de creación más pausado puede hacer mejorar y pulir las ideas.
Hay escritores de prestigio que dicen preferir escribir a mano o con máquina de escribir (no ordenador) porque de esa forma ralentizan el proceso y dan tiempo a cerebro para poner todo en el asador.
¿Qué opinas al respecto?
Sí y no. Me explico...
Hay veces que las ideas se te agolpan en la mente... en esos momentos quisieras poder 'narrarlo' todo rápido, para no perder ni una sola idea y que automáticamente se guardara todo perfectamente ordenado, y luego, con tiempo y paciencia desgranar todas esas ideas para darle cuerpo.

En cambio hay otras ocasiones donde la pausa, el pensamiento, la lectura, deben marcar un ritmo sin solaparse, justo para eso que comentas, para retomar el hilo de la inspiración, que acudan a tu mente las palabras exactas (cuando no te conformas con una aproximada), encontrar la ubicación precisa donde encaja y queda todo más claro.

En fin, creo que debe haber momentos para lo y para lo otro, por eso creo en el 'cambio de marchas'...

Un fallo muy común en muchas empresas es exigir cierta velocidad (sin posibilidad de cambio) a sus trabajadores, y el que no sea capaz de seguirlo... a la calle. Es fatídico, así es fácil perder a varios de los mejores y quedarse solo con determinados individuos hábiles de palabra pero sin garantías de tener otras habilidades que también son muy necesarias...
Pasa algo parecido con ambientes solitarios o grupales, bullicioso o silencioso, cada uno suele tener sus preferencias y si uno está forzado en un ambiente que no es el propicio para él, tampoco rinde lo que es capaz.


[/quote]
#503
Cita de: pepe63 en  1 Mayo 2021, 13:19 PM
Tengo todavía la clave, contraseña y correo del 2012.  El correo es de   @ terra.es  terminó por el 2017.
Me da defecto de la contraseña que pongo, y creo que cumple con todos las requisitos

Si pudiste entrar al foro, implica que la contraseña que tenías sigue siendo válida (y la recuerdas).
Para cambiar el correo por otro, simplemente cambia el correo.
El apartado de contraseñas, solo es obligatorio si quieres cambiar la contraseña, en cuyo caso en ambos campos debe poner la nueva contraseña y debe coincidir lo que pongas en ambas casillas (a la izquierda se señalan los requisitos de la misma).

Más abajo se te pide poner la contraseña actual (por seguridad si dejaste la sesión abierta, que nadie te la usurpe de forma tan simple), y finalmente pulsar el botón de 'cambiar perfil' y ya está.



Si tienes algún problema, sé más específico.
#504
Cita de: B€T€B€ en  1 Mayo 2021, 23:08 PM
Hacer un clic es una forma de verbalizar con la computadora.
No. La mano es siempre más lenta que la idea. Cualquier acto mecánico lo es. El pensamiento es muy rápido.
Solo los actos reflejos mecánicos pueden tener una velocidad aceptable, pero esos actos suelen ser siempre de índole repetitiva, la variedad que ofrece el pensamiento, no se presta a la velocidad de repetición.

Cita de: B€T€B€ en  1 Mayo 2021, 23:08 PM
Desde este punto de vista los altavoces (para registrar la verbalización) son accesorios y prescindibles.
Qué altavoces...?. Tú hablas con tu boca, en todo caso el dispositivo en escucha tendrá un micrófono. Si necesita responderte algo del tipo: 'No entiendo lo que pides, o error, no queda memoria libre, amé de algún olvido o despiste, si que podría necesitar el sistema un altavoz, pero no sería un intercambio contante, hablas tu, responde el sistema... sería un hablas tu 500 veces, te respond eel sistema 5, 10 o 20 veces... según el modo en que cada cual lo utilice.

En principio, no necesitas que el sistema repita como un loro o un tonto, cada cosa que tu le vas ordenando. Un 'cheff' puede indicarle a sus cocineros, no tengais miedo en 'echarle perejil'. Juanito, el tuyo debe llevar ajo'... y esperar que todos respondan como robots... 'echando perejil 3,2,1, echo'... y Juanito 'Vale le hecho 2 dientes de ajos, ..ya'. Esa exagerada verbalización si suele verse en las películas, más que nada porqué el director o el guionista toma a sus espectadores por tontos, y creen que no entenderán lo que sucede si el robot, no está permanentemente interactuando de forma innecesaria (yo ya te digo que le acabaría rajando (el cono del bafle), por cansino).

Ah... también pasa en las pelis de astronautas y del espacio... donde cada tontería la repiten por duplicado. Capitan: encender motores, astronauta: Motores encendidos, Capìtán: Nivel del aceite, astronauta: nivel del aceite 20 y subiendo... Capitán: Apagado de la radio, astronauta: Radio apagada...  toda esa verborrea es ridícula.
No conozco a nadie que actúe así en la vida real. Todo lo más parecido es cuando un cirujano pide 'tijeras... gasa...' y una enfermera se lo proporciona, pero ahí ni la enfermera repite como un loro, ni se da el caso que el cirujano pueda 'soltar' sus manos para buscar y coger el mismo lo que precise, hay una razón de peso, por tener solo dos manos y al menos una muy ocupada lo mismo que su vista.



Piensa en un sistema inteligente (en cierta medida), capaz de interpretar la mayoría de cosas que le indicas.
Mirar una pantalla para buscar un botón determinado o escoger un botón en un menú es igualmente lentorro... con el tiempo desaparecerán muchas interfaces visuales (sobrevivirán para sordomudos, por lo menos algún tiempo más), la interfaz imperante será por viva voz y habrá opciones para ciegos (y como señalaba para sordomudos).
#505
Ok... es algo muy distinto a lo que yo entendí.

Tu quieres ¿todas? las permutaciones de 2 grupos de cifras.
Donde el primer grupo está formado por las 2 primeras cifras, y el segundo por las otras 4 cifras.
Aún me queda otra duda, a ver si me la resuelves antes de que cierre la página...

A - ¿El primer grupo solo y siempre puede formar parte en las decenes y el segundo solo y siempre de las unidades (o viceversa, pero solo y siempre)?

B - ¿... o pueden igulamente ser intercambiados mientras el dígito en la unidad sea de un grupo distinto al dígito en la decena?. Esto si sería de verdad 'todas' las permutaciones posibles.
#506
Foro Libre / Re: Ayuda
1 Mayo 2021, 23:11 PM
Cita de: D3bIaN[kC] en  1 Mayo 2021, 22:31 PM
me cambian este equipo:

Hp EliteBook nueva
Procesador Intel Core i5-8365u+16 GB RAM
256 GB SSD, Windows 10
Teclado iluminado,  es toda de aluminio
Cargador original esta nueva.

Me lo cambian por mi iPhone 11 que les parece el cambio...
Vaya por delante que desconozco lo que valga un iphone 11 (ni ninguno otro, como jamás me compraré nada de Apple no miro sus precios ni menos hacer el esfuerzo de recordarlos cuando uno los vea inadvertidamente).

Si el equipo funciona (es adecuado probarlo antes, igual que quien te ofrece el cambio querrá probar que tu iPhone funciona bien) y lo necesitas y puedes apañarte con otro teléfono más sencillo, por qué no?.

Si tienes dudas acerca del si el intercambio en cuanto a valor económico salieras perdiendo, haz una búsqueda por webs de venta como eBay, Amazon, etc... sobre tu modelo de segunda mano, etc... y ya tu mismos juzga. Eso sí, no olvides resetearlo al modo de fábrica, que no contenga datos personales tuyos cuando lo entregues.
#507
...no lo veo así.

Verás un 'clic' surge después de pensar, hablar y decirte a ti mismo cosas... conlleva invertir un tiempo, para luego 'hacer clic', es redundante.
Solo piensa y habla... y mientras puedes estar mirando la tv. si quieres... con el tiempo quizás ni haga falta hablar en voz alta, pero el diálogo mental siempre debe existir.

La mecanización manual es algo que acabará desapareciendo. La orden 'Juanito levántate', siempre será más eficaz que apuntar con un puntero láser a Juanito, esperar que Juanito se sienta seleccionado, y espere la orden que se le dará a continuación. La idea fue pensada al completo en un fiat de tiempo, antes siquiera de empezar a mover el puntero láser...
...verbalizarlo es más efectivo... y con el tiempo como digo, ni siquiera hará falta verbalizarlo, habrá 'intérpretes mentales'... que al principio cometerán muchos errores pero que con el tiempo mejorarán (sí gracias a aprogramadores integrado con IAs).
#508
Todo avanza. A buen seguro habrá oficios relacionados que desaparecerán.

El de Programador en su formato actual variará, pero no desaparecerá. Una máquina jamás será capaz de hacer algo nuevo no ingeniado ni inventado, solo podrá ser programado para hacer lo que ya se conoce.

Un ejemplo sencillo... sería solicitarle a esas IA que 'pretenden suplantar' a un programador que 'cree un lenguaje de programación nuevo que cumpla ciertos requisitos que según uno, debería cumplir (por supuesto sin perder eficiencia)'. No podrá hacerlo, por varias razones, la más sencilla, es que es incapaz de ingeniar nuevas estructuras o formas de hacer las cosas, tan solo se limitará a consultar las existentes y en todo caso elegir la más óptima (a esto básicamente podríamos llamarlo plagio, si fuera realizado por una persona si no pone nada (relevante) de su cosecha propia)... puede que incluso fuera más eficiente una vez compilado, pero incluso en ese caso, seguramente resulte extremadamente más complejo de utilizar por cualquier humano, porque estaría mezclando de forma arbitraria diferentes paradigmas para intentar crear un 'nuevo lenguaje' más eficiente. No tiene capacidad de pensar si en un momento dado es preferible rebajar cierto criterio, para hacerlo más inteligible al usuario, o si la eficiencia prima sobre la complejidad tal que la misma complejidad impida que nadie fuere nunca capaz de aprender a usar dicho lenguaje...


Las IA, lo que si podrán hacer es tomar de sus amplias bases de datos, soluciones ya conocidas... para aplicarlas a problemas también conocidos, pero no van a ser capaces de crear ningún algoritmo nuevo, ni producir soluciones a problemas previamente desconocidos, sin ninguna intervención humana.

Otro ejemplo: supongamos que les pides a una IA, que dado que un determinado protocolo de comunicaciones tiene ciertos problemas conocidos de seguridad, pués que genere uno nuevo sin problemas de seguridad... a ver si es capaz de primero localizar donde están los puntos flacos de la seguridad y que solución es capaz de ofrecer para solucionarlo (otra que no sea matar a todos los humanos del Planeta, que dentro de las combinaciones posibles, esa también entra y esperemos que la dejen acotada como solución prohibida).

Lo que sí creo es que evolucionarán mucho los editores de código... por ejemplo
...en vez de teclear tanto, bastará con hablar... con mandatos del tipo:
"Crea un bucle que recorra toda la colección y busque el mayor de todos los elementos que sea múltiplo de 7."
Esas líneas de código, serán fáciles de rellenar por una IA... incluso bloques completos de código.... pero no va a ser capaz de crear un algoritmo nuevo de compresión de datos.

Siempre he preferifo el término 'sistema experto' a 'inteligencia artificial', porque aunque exista el termino, la realidad subaycente bajo el concepto nunca existirá.

p.d.: También creo que el número de personas seguira un esquema de reducción y ampliación constante.
Es decir habrá áreas que dado que una persona podrá hacerlo sola y en menos tiempo que actualmente todo un equipo, se perdería mano de obra, pero luego al tiempo se abrirán nuevos campos de exopansión que requerirán mano de obra, y esto será la constante en las próximas décadas... el ritmo al que esto suceda será lo difícil de prever.
Yo veo las máquinas, robot, IAs, como un apoyo, un complemento eficaz para el ser humano, no como un sustituto... aunque en ciertas áreas, si que sería deseable que sena sustitutos, como por ejemplo bajar al fondo del mar, para arreglar un cable dañado... ¿para qué una persona debería arriesgar su vida, pudiendo manejar remotamente un robot?.
#509
Yo no veo que 'se complique'... en realidad hay una optimización, que simplemente añade una sola línea de código y modifica ligeramente 2 lineas... esperaba que cuando ejecutara los cambios si los entendía, pudiera él mismo intentarlo (es algo obvio) o al menos preguntar...


Remplazar el método del mismo nombre por éste y listo.
Código (vbnet) [Seleccionar]

Private Sub Combinaciones(ByVal Valores As Byte())
        Dim j, k, max, min As Byte
        Dim combinacion As String = ""

        ListBox1.Items.Clear()
       
       
        min = (Valores.Min - 1)                     ' Comienzo
        max = (49 + min - Valores.Max)
        For j = 0 To max
            For k = 0 To 5
                combinacion &= ((Valores(k) + j - min).ToString) & ", "
            Next                                            ' Fin
               
            ListBox1.Items.Add(combinacion)
            combinacion = ""
        Next
    End Sub

Tiene 2 bucles igual que tu solución, probablemente más sencilos de entender, la concatenaicón de ítems para añadirlo a un listbox tampoco es nada complejo.

El resto de código que queda fuera de las líneas con los comentarios 'comienzo y 'fin, es simplemente manejo de la interfaz.
#510
p.d.: Añado una imagen que clarifique el objetivo que creo entender que es el cometido del programa.

- Puede verse (en blanco) la lista de valores elegibles: 1-49...
- La linea roja son valores (de ejemplo) de tu elección.
Dicha línea (en mi supuesto de lo creo haberte entendido), quieres desplazarla hacia uno u otro lado. Así si la desplazas 5 posiciones a la izquierda, los valores resultantes, serían aquellos que están justo encima de los que contiene la 'linea roja'.
- La línea amarilla, representa el límite de la serie más a la izquierda. Esta es en realidad la línea con la que el programa espera trabajar (ahora se ha añadido un nuevo botón y textbox, para  redactar  la linea roja y convertirla en la amarilla).
- La linea de color cyan, representa (para la serie actual), la combinación resultante más a la derecha que se puede alcanzar (manteniendo la distancia entre valores).