Está en la página 1de 3

Profesor Hugo Araya Carrasco

ESTRUCTURA DE DATOS

Selección aleatoria de turnos

En una empresa de guardias de seguridad se ha diseñado un sistema para determinar


cada día en qué orden se elegirán los guardias para ser asignados a un determinado
departamento. Para ello, los encargados de la selección han decidido utilizar la siguiente
estrategia: cada día se formará un círculo con todos los guardias. Uno de los guardias es
elegido al azar como el número 1 y el resto son numerados en orden creciente hasta N
siguiendo el sentido de las agujas del reloj.

Comenzando desde 1 y moviéndose en sentido horario uno de los encargados de la


selección cuenta k guardias mientras el otro encargado comienza en N y se mueve en
sentido antihorario contando m guardias. Los dos guardias en los que se paren los
encargados son elegidos; si los dos encargados coinciden en el mismo guardia, ese será
el único elegido.

Cada uno de los encargados de la selección comienza a contar de nuevo en el siguiente


guardia que permanezca en el círculo y el proceso continua hasta que no queda nadie.

Tener en cuenta que los dos guardias abandonan simultáneamente el círculo, luego es
posible que uno de los encargados cuente un guardia ya seleccionado por el otro.

Obs.: Para la solución se debe implementar una lista circular doblemente enlazada y las
correspondientes funciones que acceden a la estructura de datos.

Hugo Araya Carrasco - 2022 Página 1


Profesor Hugo Araya Carrasco

Se pide la construcción de un programa en lenguaje Python que, dado el número N de


guardias y los números k y m que utilizará cada encargado en la selección, indique en
qué orden irán siendo seleccionados los guardias.

Entrada de datos

Residente en el archivo de texto "guardias.in": En cada línea aparecerán tres números


(N, k y m, los tres mayores que 0 y menores que 1000) separados por un único espacio
en blanco y sin blancos ni al comienzo ni al final de la línea. La última línea del archivo
contendrá siempre tres ceros.

Salida requerida

A guardar en el archivo de texto "guardias.out": Para cada línea de datos del archivo de
entrada (excepto la última que contiene tres ceros), se generará una línea de números
que especifique el orden en que serían seleccionados los guardias para esos valores de
N, k y m. Cada selección se separa de la anterior por una coma y los números
seleccionados deben estar separados por un espacio en blanco. Cuando los dos guardias
son seleccionados simultáneamente, en el archivo aparecerá primero el elegido por el
encargado que cuenta en sentido horario, no debe ponerse una coma después del
último grupo.

Ejemplo de entrada

10 4 3

5 2 8

13 2 2

0 0 0

Hugo Araya Carrasco - 2022 Página 2


Profesor Hugo Araya Carrasco

Ejemplo de salida

4 8,9 5,3 1,2 6,10,7

2 3,5,4 1

2 12,4 10,6 8,9 5,13 1,7,3 11

Su trabajo será evaluado de acuerdo a la siguiente Rúbrica:

1 3 5 7 Total

Revisión del Código Código Ordenado, Código ordenado. Cumple con


Código. desordenado, sin usa indentación, todas las
Uso adecuado de
uso de las usa funciones pero normas de
normas de sin paso adecuado funciones en programación.
programación, de parámetros, cuanto a su
(40%) longitud y
no utiliza incorpora
comentarios, no comentarios división del
utiliza funciones, mínimos o existe problema.
nombres de sobresaturación Uso eficiente de
variables de comentarios. los comentarios.
inadecuados.

Solución No Compila. Ejecuta pero con Llega a una Llega a la


Computacional. errores de lógica. solución parcial. solución en
No se ejecuta. menos de un
Ejecuta pero no Tarda más de un minuto
Errores de llega a la solución. minuto en llegar a
(60%) Ejecución. cumpliendo
la solución. exactamente
Programa cae en No cumple con el con el formato
Loop. formato de de salida.
salida.

Hugo Araya Carrasco - 2022 Página 3

También podría gustarte