Lab2
Parte I (100 puntos)
Parte I (100 puntos)
- (30 puntos) Fibonacci:
- Desarrolle programas iterativos que calculen el n termino de la la serie de Fibonacci en Java y C-C++, usando todos los tipos de variables enteras disponibles en cada lenguaje, y determine para tipo para que valor de n se produce un overflow.
- Desarrolle un programasiterativo que calculen el n termino de la la serie de Fibonacci en Python que retorne el tiempo de ejecución y use mathplotlib y utilícelos para gráficar el tiempo de ejecución en función de n. Publique el código y los resultados en Quantopian y Github como Ipython notebook.
- (40 puntos) Insertion Sort: Desarrolle programas en Python que ejecuten Insertion Sort sobre todas permutaciones que generen la distribución y el numero promedio de (4 casos):
- numero instrucciones (lineas),
- numero de comparaciones,
- numero de intercambios y
- numero de preguntas en el while.
Para cada caso haga dos versiones una usando permutations de Itertools y determinando hasta que valor puede generar las permutaciones en memoria y otra version usando el codigo recursivo de Daniel Jimenez para generar todas las permutaciones (8 Programas). Se puede basar en el código Java de los Applets InsertSortTimePlot, InsertSortCompPlot y InsertSortWhileQuestionsPlot y en código Python para InsertionSort del IPython notebook: corrección y análisis de algoritmos y el codigo insertionsort.py. Publique el código y los resultados en Github como Ipython notebooks.
Parte II (100 puntos)
Parte II (100 puntos)
- (40 puntos) Hacker Rank: Solucione 10 problemas básicos de practica de Python en www.hackerrank.com -> Practice -> Python (al menos uno usando numpy y otro que use itertools)
- (60 puntos) Hacker Earth: Solucione un problema de Bubble Sort y dos problemas Insertion Sort en Python en www.hackerearth.com -> Practice -> Algorithms -> Sorting