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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


  Mostrar Temas
Páginas: [1]
1  Programación / Programación Visual Basic / Pequeño reto en: 13 Junio 2015, 21:52 pm
Quiero proponeros una adivinanza y un reto:

Adivinanza: ¿Que hace esta función que he inventado?
Os dejo las variables con nombres descriptivos para que podais seguirla mejor.
Los mas iniciados seguro que lo adivinan en un vistazo y se ríen de mis métodos.
El caso es que a veces se me enciende la bombilla, pero parpadea mucho :P

Reto: Mejorar esta función. Fácil.

No es que tenga demasiado interés en que sea más rápida, aunque me gustaría ver el sistema que usaría alguien con conocimientos de matemáticas (o igual hay una API para esto :D). Yo en el colegio nunca presté atención :(

He pensado que son dos buenos retos.

Espero que os animéis muchos.
Si se me ocurre como, yo también la intentaré mejorar (bueno, mas rápido ya se me está ocurriendo: puedo quitar los xor si copio 2 veces el código... o quizás no).

Haced vuestras propias versiones una vez que sepais lo que hace.

Código
  1. Function DimeQueHago(ByVal Valor1 As Long, ByVal Valor2 As Long, Trits As Integer) As Long
  2.  Dim Acu As Integer
  3.  Dim Bloque As Long
  4.  Dim Bloque2 As Long
  5.  Valor1 = Valor1 + 1 ' yo lo uso sin
  6.  Valor2 = Valor2 + 1 ' estas 2 lineas
  7.  If Valor2 > Valor1 Then
  8.    Valor1 = Valor1 Xor Valor2
  9.    Valor2 = Valor1 Xor Valor2
  10.    Valor1 = Valor1 Xor Valor2
  11.  End If
  12.  Bloque = (3 ^ Trits) / 3
  13.  Do Until Bloque = 1
  14.    Bloque2 = Bloque * 2
  15.    If Valor1 > Bloque2 Then
  16.      Valor1 = Valor1 - Bloque2
  17.      If Valor2 > Bloque2 Then
  18.        Valor2 = Valor2 - Bloque2
  19.      Else
  20.        Acu = Acu + 1
  21.        If Valor2 > Bloque Then Valor2 = Valor2 - Bloque
  22.      End If
  23.      GoTo Sort
  24.    End If
  25.  
  26.    If Valor1 > Bloque Then
  27.      Valor1 = Valor1 - Bloque
  28.      If Valor2 > Bloque Then
  29.        Valor2 = Valor2 - Bloque
  30.      Else
  31.        Acu = Acu + 1
  32.      End If
  33.    End If
  34. Sort:
  35.    If Valor2 > Valor1 Then
  36.      Valor1 = Valor1 Xor Valor2
  37.      Valor2 = Valor1 Xor Valor2
  38.      Valor1 = Valor1 Xor Valor2
  39.    End If
  40.    Bloque = Bloque / 3
  41.  Loop
  42.  If Valor1 = Valor2 Then
  43.  Else
  44.    Acu = Acu + 1
  45.  End If
  46.  
  47.  DimeQueHago = Acu
  48.  
  49.  
  50. End Function
  51.  

Lo dicho. Animaos y usad el coco un poco.

Saludos

EDIT:

¿que pasa?
¿no os interesa?
¿estáis deliberando?
¿me he pasado con el reto?
Igual no es tan fácil como pensé.
¿queréis que diga la solución?
¿queréis una pista?
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines