Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/02/2014, 19:51
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Desafíos 2014 - Semana 4

Problema
Vamos a probar una de las series mas populares en matemáticas. Toma en cuenta el siguiente algoritmo.

Código:
1  entrada n
2  imprime n
3  Si n = 1 termina
4  Si n es impar n = 3n + 1
5  si no n = n / 2
6 ve a 2
Por ejemplo para n=22 generaría la siguiente salida 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 y cuya longitud seria de 16 porque produce 16 números.

Entrada
Dado 2 números a y b, que representan un rango inclusive en ambos extremos.

Salida
La longitud mas larga que existe entre el rango a, b.

Plantilla para resolver el problema
Código Python:
Ver original
  1. def max_cycle(a, b):
  2.     return 0
  3.  
  4. if __name__ == '__main__':
  5.     from time import time
  6.     t1 = time()
  7.     assert max_cycle(1, 10) == 20
  8.     assert max_cycle(100, 200) == 125
  9.     assert max_cycle(201, 210) == 89
  10.     assert max_cycle(900, 1000) == 174
  11.     assert max_cycle(113383, 113383) == 248
  12.     assert max_cycle(999999, 1) == 525
  13.     assert max_cycle(20, 20) == 8
  14.     assert max_cycle(9999, 9999) == 92
  15.     assert max_cycle(1, 9999) == 262
  16.     assert max_cycle(340, 3000) == 217
  17.     assert max_cycle(3000, 340) == 217
  18.     assert max_cycle(500, 101) == 144
  19.     assert max_cycle(1, 1) == 1
  20.     assert max_cycle(9999, 9998) == 92
  21.     t2 = time()
  22.     print "Tiempo de ejecucion %.3f s" % (t2 - t1)

PD: El score estará dado por tiempo de ejecución.

Score:
1. sukoy 21.416s 2.221s

Última edición por razpeitia; 18/02/2014 a las 15:22