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

#2021
Cita de: *PsYkE1* en 19 Agosto 2010, 03:28 AM
Quizas sea una chorrada, pero y si usamos RegExp?

Puede que sea una forma mejor de hacerlo, pero... tienes que optimizarlo bien para que no consuma tiempo (ya que tiene varias validaciones) y... comparando con bytes, si esta optimizado no creo que le pueda ganar :P
#2022
Bien LeandroA, ya puse el filtro para que no acepte numeros de un digito, y que si es capicua que calcule igual :P

Los numeros de 1 solo digito no pueden ser calculados, ya que nunca cumpliran la condicion de ser capicua
#2023
Cita de: apache_scrc en 19 Agosto 2010, 00:01 AM
Ola estimados, les cuento.. estoy trabajando en webservice .net

Mal.... esto es vb6, en programacion general hay un subforo de .net

Segundo, porque quieres hacer el return solo? si la funcion tiene que devolver un string, porque devuelves un array?
#2024
porque siempre las mias es una de las mas lentas? :xD

bueno, con la base de Karcrack y tokes, me quedo esto, un poquitin mas rapido que la de tokes :P pero muchisimo mas rapida que la mia anterior

Código (vb) [Seleccionar]
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
#2025
jajaja las validaciones las agregue al final :P

D4N93R propone agregar un parametro con el numero de iteraciones dado para llegar al resultado final, que dicen, lo ponemos? (seria devolver i en mi caso :xD)
#2026
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 (vb) [Seleccionar]
Public Function EsLychrel(ByVal numero As Double, ByRef numeroFinal As Double, Optional maxVueltas As Long = 100) As Boolean
   Dim i As Long ' FAIL: As Integer xDDDD
   numeroFinal = Abs(numero) ' No permito numeros negativos
   If numero = CDbl(StrReverse(numero)) Then Exit Function ' Si el numero ya es capicua, para que me gasto? xD
   numeroFinal = Val(numero) ' Quito los decimales
   maxVueltas = Abs(maxVueltas) ' 1 a -10 (sumando 1) es imposible xDDD, quito los negativos
   For i = 1 To maxVueltas
       ' Sumo el normal y el numero al revez, poniendo formato numerico comun
       numeroFinal = numeroFinal + CDbl(StrReverse(FormatNumber(numeroFinal, 0, vbTrue, vbFalse, vbFalse)))
       ' Comparo si es el mismo :P
       If FormatNumber(numeroFinal, 0, vbTrue, vbFalse, vbFalse) = StrReverse(FormatNumber(numeroFinal, 0, vbTrue, vbFalse, vbFalse)) Then Exit Function
   Next
   EsLychrel = True
End Function


EDIT: Hecho en 56957,0293718157 ms, 10 To 100000, maxVueltas = 1000 (con DoEvents entre calculo de cada numero :xD)
#2027
Corregido! Puse como double los tipos de datos, asi no hay desbordamientos :P
#2028
Hooola!

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


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 (vb) [Seleccionar]

Public Function IsLychrelNumber(numero As Double, ByRef numeroFinal As Double,Optional maxVueltas As Long = 20) As Boolean


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!
#2029
Ps dile a tu amigo que se baje de su nube, vb es tan potente como uno quiere :P Yo prefiero para programar vb6 o vb.net para casi todo y me va bien :P conozco C++ y otros lenguajes como C# sin embargo casi siempre programo en vb

Podran decir que se necesita el runtime, por el runtime es mas lento (?), que necesitas ocx (???). Si y la verdad ni me interesa :P yo seguire programando en vb!

Saber C++ no significa "saber mucho de programacion" :P
#2030
Usa System.Enviroment.NewLine; (Nota: Enviroment puede variar :xD)