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 originaldef max_cycle(a, b):
return 0
if __name__ == '__main__':
from time import time
t1 = time()
assert max_cycle(1, 10) == 20
assert max_cycle(100, 200) == 125
assert max_cycle(201, 210) == 89
assert max_cycle(900, 1000) == 174
assert max_cycle(113383, 113383) == 248
assert max_cycle(999999, 1) == 525
assert max_cycle(20, 20) == 8
assert max_cycle(9999, 9999) == 92
assert max_cycle(1, 9999) == 262
assert max_cycle(340, 3000) == 217
assert max_cycle(3000, 340) == 217
assert max_cycle(500, 101) == 144
assert max_cycle(1, 1) == 1
assert max_cycle(9999, 9998) == 92
t2 = time()
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