elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [RETO] ¿Fácil? Buscando los números de Lychrel
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 4 Ir Abajo Respuesta Imprimir
Autor Tema: [RETO] ¿Fácil? Buscando los números de Lychrel  (Leído 12,558 veces)
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
[RETO] ¿Fácil? Buscando los números de Lychrel
« en: 18 Agosto 2010, 14:54 pm »

Hooola!

No sabia si presentar esto como reto o no (?)

Código:
http://gaussianos.com/la-conjetura-del-196/
http://en.wikipedia.org/wiki/Lychrel_number

Ahi esta, tienen que hacer una funcion booleana que calcule los numeros capicuas a partir de este, con un numero maximo de vueltas, para calcular si es de Lychrel o no :P Ademas de devolver el numero final dado

La firma debe ser asi:

Código
  1. Public Function IsLychrelNumber(numero As Double, ByRef numeroFinal As Double,Optional maxVueltas As Long = 20) As Boolean
  2.  

Si no se logra dar el numero de vueltas en menos de maxVueltas se toma como si fuera numero de Lychrel (aunque el numero este en la vuelta 21 :¬¬)

NOTA: Cabe aclarar que debe devolver True cuando no se encuentra el numero capicua  :silbar:

El tiempo se medira con la clase CTiming ya publicada en retos anteriores...

Ahora si! A codear!


« Última modificación: 18 Agosto 2010, 16:22 pm por raul338 » En línea

Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.089



Ver Perfil WWW
Re: [RETO] ¿Fácil? Buscando los números de Lychrel
« Respuesta #1 en: 18 Agosto 2010, 14:55 pm »

Me apunto raul!! :D

DoEvents¡! :P


En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: [RETO] ¿Fácil? Buscando los números de Lychrel
« Respuesta #2 en: 18 Agosto 2010, 15:36 pm »

Tiene que ser en VB? xD
En línea

isseu


Desconectado Desconectado

Mensajes: 325


°º¤ø,¸¸,El conocimiento es poder°º¤ø,¸¸,ø¤º°`°º¤ø,


Ver Perfil WWW
Re: [RETO] ¿Fácil? Buscando los números de Lychrel
« Respuesta #3 en: 18 Agosto 2010, 16:13 pm »

lo hare más tarde, pero en c++
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [RETO] ¿Fácil? Buscando los números de Lychrel
« Respuesta #4 en: 18 Agosto 2010, 16:15 pm »

Ya lo hice, ahora lo tengo que modificar :xD
Dada la manera en que se calcula el número, probando incluso con 89 (es uno de los ejemplos de wikipedia) se desborda, no sirven los long :xD

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: [RETO] ¿Fácil? Buscando los números de Lychrel
« Respuesta #5 en: 18 Agosto 2010, 16:49 pm »

Corregido! Puse como double los tipos de datos, asi no hay desbordamientos :P
En línea

79137913


Desconectado Desconectado

Mensajes: 1.169


4 Esquinas


Ver Perfil WWW
Re: [RETO] ¿Fácil? Buscando los números de Lychrel
« Respuesta #6 en: 18 Agosto 2010, 16:52 pm »

HOLA!!!

Que bueno acabo de leer el post de novlucker y me saco las dudas

Gracias!!!
« Última modificación: 18 Agosto 2010, 17:00 pm por 79137913 » En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [RETO] ¿Fácil? Buscando los números de Lychrel
« Respuesta #7 en: 18 Agosto 2010, 16:56 pm »

Código
  1. Function IsLychrelNumber(numero As Double, ByRef numeroFinal As Double, Optional maxVueltas As Long = 20) As Boolean
  2.  
  3. Dim i As Long
  4. numeroFinal = numero
  5.  
  6. For i = 0 To maxVueltas
  7. numeroFinal = numeroFinal + CDbl(StrReverse(CStr(numeroFinal)))
  8. If (numeroFinal = CDbl(StrReverse(CStr(numeroFinal)))) Then Exit Function
  9. Next
  10. IsLychrelNumber = True
  11.  
  12. End Function

Entendí que numeroFinal era el último generado, así que comienzo con ese, sino lo quito y no lo uso :xD
De cualquier manera, esto sigue siendo funcional para números "pequeños", sino hay que hacer la suma mediante strings.

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: [RETO] ¿Fácil? Buscando los números de Lychrel
« Respuesta #8 en: 18 Agosto 2010, 17:29 pm »

Optimizando me quedo como la de novlucker!! :xD

Se me habia ocurrido comprar solo dando vuelta "despues de la mitad" del numero, pero... era mas lento ._.

Aca esta, se podria decir que es practicamente igual a la de novlucker, solo que esta funciona aun para numeros grandes :xD

Código
  1. Public Function EsLychrel(ByVal numero As Double, ByRef numeroFinal As Double, Optional maxVueltas As Long = 100) As Boolean
  2.    Dim i As Long ' FAIL: As Integer xDDDD
  3.    numeroFinal = Abs(numero) ' No permito numeros negativos
  4.    If numero = CDbl(StrReverse(numero)) Then Exit Function ' Si el numero ya es capicua, para que me gasto? xD
  5.    numeroFinal = Val(numero) ' Quito los decimales
  6.    maxVueltas = Abs(maxVueltas) ' 1 a -10 (sumando 1) es imposible xDDD, quito los negativos
  7.    For i = 1 To maxVueltas
  8.        ' Sumo el normal y el numero al revez, poniendo formato numerico comun
  9.        numeroFinal = numeroFinal + CDbl(StrReverse(FormatNumber(numeroFinal, 0, vbTrue, vbFalse, vbFalse)))
  10.        ' Comparo si es el mismo :P
  11.        If FormatNumber(numeroFinal, 0, vbTrue, vbFalse, vbFalse) = StrReverse(FormatNumber(numeroFinal, 0, vbTrue, vbFalse, vbFalse)) Then Exit Function
  12.    Next
  13.    EsLychrel = True
  14. End Function
  15.  

EDIT: Hecho en 56957,0293718157 ms, 10 To 100000, maxVueltas = 1000 (con DoEvents entre calculo de cada numero :xD)
« Última modificación: 18 Agosto 2010, 17:46 pm por raul338 » En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [RETO] ¿Fácil? Buscando los números de Lychrel
« Respuesta #9 en: 18 Agosto 2010, 17:37 pm »

Dudo que tan grandes, la variable numeroFinal tiene un límite y ahí crashea.
Además, los códigos funcionan porque tiene el maxVueltas bajo, donde lo agrandes muere :xD

[Edito]: El mío crashea con números más chicos xD

Saludos
« Última modificación: 18 Agosto 2010, 17:40 pm por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Páginas: [1] 2 3 4 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[RETO+Python] Buscando rangos « 1 2 »
Scripting
Novlucker 13 7,616 Último mensaje 31 Enero 2011, 18:30 pm
por Karcrack
Sacar numeros de una ecuacion? reto? « 1 2 »
Programación Visual Basic
Edu 12 4,873 Último mensaje 14 Marzo 2011, 16:58 pm
por 79137913
Reto relativamente fácil « 1 2 »
Desafíos - Wargames
ace332 15 10,794 Último mensaje 23 Enero 2012, 19:46 pm
por Caster
Reto KeygenMe #2 [Facil]
Ingeniería Inversa
jEUDi17 7 4,225 Último mensaje 28 Agosto 2012, 23:29 pm
por Flamer
Reto SQLi -1-[fácil]
Desafíos - Wargames
elh4ck3r 3 3,334 Último mensaje 20 Julio 2018, 22:14 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines