Estás en:   ArielOrtiz.com > Estructura de datos > Harry Potter y la lista circular

Harry Potter y la lista circular

Objetivos

Durante esta actividad, los alumnos serán capaces de:

Esta actividad promueve las siguientes habilidades, valores y actitudes: análisis y síntesis, capacidad de resolver problemas, creatividad, y uso eficiente de la informática y las telecomunicaciones.

Descripción

Esta actividad puede ser elaborada de manera individual o en parejas.

NOTA: La siguiente descripción es una adaptación del clásico problema de Josefo.

Durante este periodo académico te fuiste de intercambio a la escuela de hechicería y brujería de Hogwarts para llevar los cursos de "Santería 1" e "Introducción a los Fenómenos Metafísicos Relacionados al Chupacabras", los cuales te van a revalidar por los tópicos II y III de tu carrera.

Se te ha indicado que tu compañero de dormitorio durante tu estancia debe ser seleccionado siguiendo el siguiente proceso:

Todos tus compañeros se colocan en un círculo tomados de las manos. Posteriormente escoges arbitrariamente un número entero positivo n (2 ≤ n ≤ 7) y a uno de tus compañeros del círculo. Comenzando con el compañero que seleccionaste, se empieza a contar en el mismo sentido que las manecillas del reloj alrededor del círculo. Cuando la cuenta alcanza el valor de n, esta persona es retirado del círculo y la cuenta empieza de nuevo, a partir del siguiente compañero en el círculo. El proceso continúa de tal manera que cada vez que la cuenta alcanza el valor de n, se remueve una persona del círculo. La persona que es removida del círculo, por supuesto, no se vuelve a contar. El último que queda será tu compañero de dormitorio.

El director Dumbledore, sabiendo que estudias una carrera de computación en el Tec de Monterrey, te ha pedido que desarrolles un programa en Python para simular todo este proceso. Este programa debe:

Deberás implementar la solución a este problema usando una lista circular sencillamente encadenada.

Una corrida ejemplo del programa se muestra a continuación (los caracteres en azul corresponden a la entrada del usuario):

Dame el valor de n (entre 2 y 7): 4
Nombre de compañero: Euan
Nombre de compañero: Ron
Nombre de compañero: Keneth
Nombre de compañero: Fred
Nombre de compañero: Lee
Nombre de compañero: Harry
Nombre de compañero: fin
¿Con quién se va a comenzar a contar?: Ron
Sale Lee
Sale Keneth
Sale Ron
Sale Fred
Sale Euan
Tu compañero de dormitorio es: Harry

¿Qué se debe entregar?

Coloca la solución al problema en un archivo llamado circular.py.

Sube el archivo circular.py usando el Sistema de Entrega de Tareas Automatizado. No se aceptan tareas por ningún otro medio.

Fecha límite: Viernes, 19 de octubre.

IMPORTANTE: El archivo fuente debe incluir hasta arriba la información personal de los autores (nombre y matrícula) dentro de un comentario. Por ejemplo:

#--------------------------------------------------------------------
# Actividad de programación: Harry Potter y la lista circular
# Fecha: 19-Oct-2012
# Autores:
#           1166611 Pepper Pots  
#           1160611 Anthony Stark
#--------------------------------------------------------------------

Evaluación

Esta actividad será evaluada usando los siguientes criterios:

100 La actividad cumple con todos los requerimientos.
-10 No se incluyó en comentario los datos de los autores.
10 El programa fuente contiene errores sintácticos.
50-90 El programa produce algunos errores al momento de correrlo.
DA La solución es un plagio.