Autor
|
Tema: [RETO] ¿Fácil? Buscando los números de Lychrel (Leído 13,722 veces)
|
Psyke1
Wiki
Desconectado
Mensajes: 1.089
|
Interesante, no conozco esos truquillos, supongo que es mas rapido que convertirlo con CDbl(), no?¿ DoEvents¡!
|
|
|
En línea
|
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Deberia ser mas rapida mi funcion de lngReverse() que el StrReverse()... Alguien ha provado? XD
|
|
|
En línea
|
|
|
|
|
Tokes
Desconectado
Mensajes: 140
|
Aquí dejo un nuevo código, basado en la función que nos mostró Karcrack. Private Function EsNumLychrel5(ByVal num As Long, ByRef numeroFinal, Optional ByVal iteraciones As Long = 50) As Boolean Dim n As Double, nrev As Double, sp As String If num And &H80000000 Then Exit Function n = num sp = "1234" Do While iteraciones > 1 nrev = dblReverse(n) If n = nrev Then Exit Function n = n + nrev iteraciones = iteraciones - 1 Loop nrev = dblReverse(n) If n = nrev Then Exit Function EsNumLychrel5 = True numeroFinal = n End Function Y la función de Karcrack (modificada para que pueda manejar doubles y no sólo longs): Public Function dblReverse(ByVal lDbl As Double) As Double Do dblReverse = dblReverse * 10 + (lDbl - (10 * Fix(lDbl / 10))) lDbl = Fix(lDbl / 10) Loop While lDbl > 0 End Function Efectivamente es más rápido. Saludos.... Y muchas gracias Karcrack.
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
BlackZeroX (v 3)
esta en base a la funcion de Karcrack xP
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
porque siempre las mias es una de las mas lentas? bueno, con la base de Karcrack y tokes, me quedo esto, un poquitin mas rapido que la de tokes pero muchisimo mas rapida que la mia anterior Public Function EsLychrel02(ByVal numero As Double, ByRef numeroFinal As Double, Optional maxVueltas As Long = 100) As Boolean If &H80000000 And maxVueltas Then Exit Function If numero < 10 Then Exit Function numeroFinal = numero numero = dblReverse(numeroFinal) If numeroFinal = numero Then numeroFinal = numero + numero Exit Function End If For maxVueltas = maxVueltas To 1 Step -1 numero = dblReverse(numeroFinal) If numeroFinal = numero Then Exit Function numeroFinal = numeroFinal + numero Next EsLychrel02 = True End Function
|
|
« Última modificación: 19 Agosto 2010, 01:20 am por raul338 »
|
En línea
|
|
|
|
Tokes
Desconectado
Mensajes: 140
|
Disculpen, hace rato puse mi código pero con instrucciones basura que nada que ver con el proceso (era para probar ciertas funciones). Aquí se los dejo corregido. Tiene prácticamente la misma velocidad de antes, pero sin ese código basura. Private Function EsNumLychrel5(ByVal num As Long, ByRef numeroFinal As Double, Optional ByVal iteraciones As Long = 50) As Boolean Dim n As Double, nrev As Double If num And &H80000000 Then Exit Function n = num Do While iteraciones > 0 nrev = dblReverse(n) If n = nrev Then Exit Function n = n + nrev iteraciones = iteraciones - 1 Loop nrev = dblReverse(n) If n = nrev Then Exit Function EsNumLychrel5 = True numeroFinal = n End Function
|
|
|
En línea
|
|
|
|
LeandroA
|
creo que por el momento la unica que funciona bien es la de Novlucker las demas no esta trabajando correctamente
solo tengo mis dudas con la de Novlucker con los numeros del 1 al 9 ya que dan numeros simples y no se cumple la condición de capicua
la de raul338 tambien anda bien con el mismo problea que el de Novlucker y tambien pero hay un problema con el 11 ya que da como resultado 11 cuando deberia ser 22
@BlackZeroX
0 = blucle infinito la funcion deve devolver true si no se logra el capicua en los determinados ciclos tambien el problema del 1 al 10 pero peor, muestra erronos
@Tokes no estas devolviendo "numeroFinal" correctamente.
|
|
|
En línea
|
|
|
|
Tokes
Desconectado
Mensajes: 140
|
Disculpen, es cierto. Según yo ya devuelvo numero final en este código. Private Function EsNumLychrel5b(ByVal num As Long, ByRef numeroFinal As Double, Optional ByVal iteraciones As Long = 50) As Boolean Dim n As Double, nrev As Double If num And &H80000000 Then Exit Function n = num Do While iteraciones > 0 nrev = dblReverse(n) If n = nrev Then numeroFinal = n Exit Function End If n = n + nrev iteraciones = iteraciones - 1 Loop nrev = dblReverse(n) If n = nrev Then Exit Function EsNumLychrel5b = True numeroFinal = n Si alguien gusta hacerle alguna modiicación ¡Adelante!
|
|
|
En línea
|
|
|
|
Psyke1
Wiki
Desconectado
Mensajes: 1.089
|
Si alguien gusta hacerle alguna modiicación ¡Adelante! Si, yo si se la voy ha hacer, aqui esta: Private Function EsNumLychrel5b(ByVal num As Long, ByRef numeroFinal As Double, Optional ByVal iteraciones As Long = 50) As Boolean Dim n As Double, nrev As Double If num And &H80000000 Then Exit Function n = num Do While iteraciones > 0 nrev = dblReverse(n) If n = nrev Then numeroFinal = n Exit Function End If n = n + nrev iteraciones = iteraciones - 1 Loop nrev = dblReverse(n) If n = nrev Then Exit Function EsNumLychrel5b = True numeroFinal = n End Function
Faltaba el End Function... DoEvents¡!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[RETO+Python] Buscando rangos
« 1 2 »
Scripting
|
Novlucker
|
13
|
8,194
|
31 Enero 2011, 18:30 pm
por Karcrack
|
|
|
Sacar numeros de una ecuacion? reto?
« 1 2 »
Programación Visual Basic
|
Edu
|
12
|
5,354
|
14 Marzo 2011, 16:58 pm
por 79137913
|
|
|
Reto relativamente fácil
« 1 2 »
Desafíos - Wargames
|
ace332
|
15
|
11,365
|
23 Enero 2012, 19:46 pm
por Caster
|
|
|
Reto KeygenMe #2 [Facil]
Ingeniería Inversa
|
jEUDi17
|
7
|
4,687
|
28 Agosto 2012, 23:29 pm
por Flamer
|
|
|
Reto SQLi -1-[fácil]
Desafíos - Wargames
|
elh4ck3r
|
3
|
3,815
|
20 Julio 2018, 22:14 pm
por engel lex
|
|