En este repositorio, en la sección de Issues podrán hacer preguntas sobre las tareas del curso.
No se pueden publicar soluciones a las tareas, aunque sean parciales. Esto incluye código, pseudocódigo, o links a algoritmos que resuelvan alguna parte de la tarea. Issues que no cumplan con esta regla serán eliminadas.
No se asegura que se responderán dudas fuera de horario hábil.
Si una pregunta está repetida, esta se cerrará y se redirigirá a la original.
Una issue se etiquetara como Resuelto cuando el alumno que la hizo confirme que su duda fue resuelta o hayan pasado 2 dias desde la última respuesta.
Una buena forma de resolver los ejercicios propuestos, es inicialmente intentar una solución que solo resuelva el problema, sin importar la eficiencia. Luego, una vez que tengan una solución que funcione, plantearse qué partes del algoritmo se pueden mejorar para llegar a la complejidad solicitada.
A veces, la misma complejidad logra dar indicios de que es lo que se debe hacer. Por ejemplo, si se pide un algoritmo de complejidad O(n log n)
, es probable que se deba usar un algoritmo de ordenamiento.
Si tienen dudas sobre el enunciado, no duden en preguntar. Es preferible a que se hagan suposiciones incorrectas.
Aunque uno no lo crea, Python puede ser optimizado en muchas ocasiones. Se recomienda plantearse cómo realizar ciertas operaciones de forma más rápida.
Generar testcases de forma propia puede ser una buena forma de entender el problema. Esto ademas les ayudará a saber cómo escala su algoritmo con respecto al tamaño de la entrada.
Un algoritmo recursivo puede ser más fácil de entender, pero en general es menos eficiente que su versión iterativa. Siempre que sea posible, se recomienda implementar la versión iterativa.
Siempre que sea posible, usar funciones y estructuras de datos que ya están implementadas en Python, ya que estas suelen ser más eficientes que las implementaciones propias. Por ejemplo, si necesitan ordenar una lista, usar el método sort
(o la función sorted
) en vez de implementar su propio algoritmo de ordenamiento, o si necesitan realizar una cola, usar collections.deque
.
La solución de cada parte de cada tarea debe ser un único archivo .py
que contenga su código de solución. Otros archivos como test.py
o main.py
no serán considerados (ver que el .gitignore
del repositorio excluye estos archivos).
Si cree necesitar de alguna librería adicional, consultar antes de usarla. Como norma general, no se permitirán librerías que no estén incluidas en la librería estándar de Python.