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:
import itertools
lista = ['Hola', 'Qué tal', 'Adiós']
permutaciones = list(itertools.permutations(lista))
print('Lista:', lista)
print('Permutaciones:', permutaciones)
for p in permutaciones:
print(", ".join(p))
Análisis
Cumple con el enunciado
El enunciado de la práctica indica que el programa debe generar permutaciones sin usar la biblioteca itertools. Este código utiliza itertools.permutations, lo cual evita que el alumno demuestre el entendimiento de algoritmos de permutación básicos, como bucles anidados o recursión.
Es fácil de leer y entender
El código es breve y utiliza nombres de variables claros (lista, permutaciones). La lógica está bien estructurada: genera las permutaciones, las imprime y luego muestra cada una en un formato legible. Sin embargo, la simplicidad se debe al uso de itertools, no a una implementación manual.
Sigue buenas prácticas de programación
Aunque el código funciona, no aborda el objetivo pedagógico de la práctica: aprender a generar permutaciones desde cero. Además, no incluye comentarios ni validaciones (por ejemplo, verificar que la lista no esté vacía), lo cual sería útil en un contexto real.
Recomendaciones de mejora
-
Evita el uso de
itertools
La práctica requiere que las permutaciones se generen sin bibliotecas externas. Reemplazaitertools.permutationscon bucles anidados o un algoritmo recursivo para crear las permutaciones manualmente. -
Implementa bucles anidados
Para listas pequeñas (como en este ejemplo con 3 elementos), puedes usar buclesforanidados que recorran índices y combinen los elementos evitando repeticiones. Por ejemplo:for i in range(len(lista)): for j in range(len(lista)): if j != i: for k in range(len(lista)): if k != i and k != j: print(lista[i], lista[j], lista[k]) -
Verifica el formato de salida
Asegúrate de que las permutaciones se impriman exactamente como se muestra en el ejemplo del enunciado (por ejemplo, si cada permutación debe estar en una línea separada o usar un formato específico). -
Considera la generalización
Si el enunciado permite listas de cualquier longitud, usa recursión o un algoritmo dinámico para generar permutaciones sin depender del tamaño fijo de la lista.