Last active
May 9, 2016 03:12
-
-
Save ricardosiri68/c5f8c5d45564d1345846e11d05e4e6e6 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
''' | |
Teniendo en cuenta que en la sucesión de Fibonacci cada término es la suma de | |
los dos anteriores siendo los primeros cuatro términos de la sucesión (1,1,2,3) | |
: | |
Generar un programa donde se ingrese por teclado un número entero mayor a 3. El | |
programa deberá imprimir en pantalla cada elemento de la sucesión hasta alcanzar | |
una cantidad de terminos igual al número ingresado Finalmente deberá mostrará la | |
cantidad de números pares que existan en la sucesión generada. | |
''' | |
def fibonacci(n, known): | |
'''este metodo aplica la tecnica de memoization una tecnica de programcion | |
que le permite recordar anteriores valores computados es mucho mas veloz que | |
la forma convencional soportando secuencias muy extensas en un tiempo minimo | |
de resolusion. (known) es un diccionario que recolecta cada resultado | |
obtenido''' | |
if n in known: | |
return known[n] | |
res = fibonacci(n-1, known) + fibonacci(n-2, known) | |
known[n] = res | |
return res | |
def get_fib_sequence(n): | |
'''obtiene la sequencia de fibonacci inicializando el diccionario que aplica | |
la almacena''' | |
sequence = {0: 0, 1: 1} | |
fibonacci(n, sequence) | |
values = list(sequence.values()) | |
values.sort() | |
return values[1:] | |
def get_input(): | |
'''obtiene la entrada de texto del usuario y valida que sea un entero valido | |
y mayor que 3''' | |
try: | |
num = int(input('ingrese un numero entero mayor que 3:')) | |
except ValueError: | |
raise ValueError('Debe ingresar un numero entero') | |
assert num > 3, Exception('el numero debe ser mayor que 3') | |
return num | |
if __name__ == "__main__": | |
sequence = get_fib_sequence(get_input()) | |
count_pairs = 0 # contador de numeros pares | |
for value in sequence: | |
print(str(value), end=', ') | |
if not value % 2 and value != 0: | |
count_pairs += 1 | |
print('se encontraron %d numeros pares' % count_pairs) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment