Skip to content

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

No cumple.
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

Sí, es fácil de leer.
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

No sigue buenas prácticas.
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

  1. Evita el uso de itertools
    La práctica requiere que las permutaciones se generen sin bibliotecas externas. Reemplaza itertools.permutations con bucles anidados o un algoritmo recursivo para crear las permutaciones manualmente.

  2. Implementa bucles anidados
    Para listas pequeñas (como en este ejemplo con 3 elementos), puedes usar bucles for anidados 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])
  3. 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).

  4. 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.