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 en parte 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:



from itertools import permutations


lista = ["Hola", "Qué tal", "Adiós"]


all_permutations = permutations(lista)

print("Todas las permutaciones posibles:")
for i, perm in enumerate(all_permutations, 1):
    print(f"{i}. {list(perm)}")

print(f"\nTotal de permutaciones: {len(list(permutations(lista)))}")



Análisis

Cumple con el enunciado

El programa cumple parcialmente con el enunciado:

  • SÍ: Muestra la lista inicial
  • SÍ: Genera todas las permutaciones posibles
  • NO: No imprime las permutaciones en el formato solicitado (strings separados por espacios), sino que las muestra como listas con corchetes y comas
  • NO: El enunciado especifica un texto de salida concreto ("Lista:", "Permutaciones:") que el programa no sigue exactamente

Es fácil de leer y entender

El código presenta dificultades para principiantes:

  • Uso avanzado de itertools.permutations() que los alumnos aún no han visto en profundidad
  • Conversión repetida de iteradores a listas (list(permutations(lista))) es confusa e ineficiente
  • El uso de enumerate() y f-strings puede ser complejo para quien está aprendiendo
  • No hay comentarios explicativos que ayuden a entender la lógica

Sigue buenas prácticas de programación

El programa no sigue buenas prácticas:

  • No define un bloque principal if __name__ == "__main__":
  • Duplica la conversión a lista: list(permutations(lista)) aparece dos veces
  • No proporciona la funcionalidad opcional solicitada (listas con 4+ elementos)
  • El formato de salida no coincide con las especificaciones del enunciado

Recomendaciones de mejora

  1. Cumple exactamente con el formato de salida:

    print('Lista:', lista)
    print('Permutaciones:')
    for perm in permutations(lista):
        print(' '.join(perm))
  2. Implementación sin itertools: Para esta práctica, deberías implementar un algoritmo de permutaciones (recursión o backtracking) en lugar de usar itertools

  3. Añade la funcionalidad opcional:

    lista = ['Hola', 'Qué tal', 'Adiós', 'Bienvenido']  # 4 elementos
  4. Optimiza la eficiencia:

    perm_list = list(permutations(lista))
    print(f"Total de permutaciones: {len(perm_list)}")
  5. Estructura el programa con función principal para mejores prácticas

La práctica debería centrarse en entender cómo generar permutaciones mediante algoritmos propios, no en usar funciones avanzadas de librerías.