Revisión automática de la práctica 01-permutaciones
Este es el resultado de una revisión automática de la prácica 01-permutaciones, tal y como la hemos recogido de este repositorio de entrega. Por favor, ten en cuenta que al ser una revisión automática, realizada con la ayuda de un asistente de inteligencia artificial generativa, puede incluir errores, y ser incorrecta. Pero leela con atención, porque creemos que puede tener información útil. Si tienes cualquier duda, o crees que la revisión es errónea, por favor, consulta con los profesores de la asignatura.
Revisión automática de programa
Programa revisado:
lista1 = ['Hola', 'Qué tal', 'Adiós']
lista2 = ['Hola', 'Adiós', 'Qué tal']
lista3 = ['Qué tal', 'Hola', 'Adiós']
lista4 = ['Qué tal', 'Adiós', 'Hola']
lista5 = ['Adiós', 'Hola', 'Qué tal']
lista6 = ['Adiós', 'Qué tal', 'Hola']
print('Lista1', lista1)
print('Permutaciones:')
print(1, lista2)
print(2, lista3)
print(3, lista4)
print(4, lista5)
print(5, lista6)
Análisis
Cumple con el enunciado
El programa no cumple con el enunciado. Aunque genera todas las permutaciones posibles de una lista de 3 elementos (como se ve en el ejemplo), lo hace de forma manual asignando cada permutación a variables individuales. El enunciado probablemente busca que el alumno implemente un algoritmo para generar permutaciones automáticamente, no que las escriba todas a mano.
Es fácil de leer y entender
Sí es fácil de leer para alguien que conozca el resultado esperado, ya que las variables y salidas están claramente etiquetadas. Sin embargo, la repetición de código (6 listas y 6 print) reduce su claridad y hace evidente que no es una solución escalable.
Sigue buenas prácticas de programación
No sigue buenas prácticas. El código repite estructuras idénticas múltiples veces (violación del principio DRY), no usa bucles ni funciones para generar las permutaciones dinámicamente, y no es reutilizable para listas de diferente tamaño. Además, no hay comentarios ni lógica que explique cómo se obtienen las permutaciones.
Recomendaciones de mejora
- Evitar hardcoding: En lugar de definir manualmente cada permutación, usar un algoritmo o bucles anidados para generarlas automáticamente. Por ejemplo, con recursión o backtracking.
-
Usar bucles: Implementar una solución con bucles (como
for) para recorrer índices y construir permutaciones dinámicamente. -
No usar
itertools: Dado que el objetivo es practicar algoritmos básicos, se debe evitar la bibliotecaitertoolsy enfocarse en una implementación manual. - Reducir redundancia: Eliminar la repetición de código mediante funciones o estructuras iterativas, incluso si el resultado final no es óptimo en eficiencia.
- Generalizar la solución: Crear un programa que funcione para cualquier lista de 3 elementos, no solo para las cadenas específicas del ejemplo.