| 
	
		|  Autor | Tema: [RETO] ¿Fácil? Buscando los números de Lychrel  (Leído 15,500 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 BooleanDim 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 DoubleDo
 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 = TrueEnd 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 BooleanDim 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 BooleanDim 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 BooleanDim 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 = nEnd 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 | 9,104 |  31 Enero 2011, 18:30 pm por Karcrack
 |  
						|   |   | Sacar numeros de una ecuacion? reto?
							« 1 2 » Programación Visual Basic
 | Edu | 12 | 5,993 |  14 Marzo 2011, 16:58 pm por 79137913
 |  
						|   |   | Reto relativamente fácil
							« 1 2 » Desafíos - Wargames
 | ace332 | 15 | 12,426 |  23 Enero 2012, 19:46 pm por Caster
 |  
						|   |   | Reto KeygenMe #2 [Facil] Ingeniería Inversa
 | jEUDi17 | 7 | 5,287 |  28 Agosto 2012, 23:29 pm por Flamer
 |  
						|   |   | Reto SQLi -1-[fácil] Desafíos - Wargames
 | elh4ck3r | 3 | 4,741 |  20 Julio 2018, 22:14 pm por engel lex
 |    |