Problema de las puertas
Un hotel dispone de n habitaciones y n camareros. Los camareros tienen la costumbre de cambiar de estado las puertas (es decir, abrir las cerradas y cerrar las abiertas). El proceso es el siguiente:
- Inicialmente todas las puertas están cerradas.
- El primer camarero cambia de estado las puertas de todas las habitaciones.
- El segundo cambia de estado todas las puertas que son múltiplos de 2.
- El tercero cambia de estado todas las puertas que son múltiplos de 3.
- El cuarto cambia de estado todas las puertas que son múltiplos de 4.
- Así, hasta que ha pasado el último camarero.
Defina la función estado-de-las-puertas
tal que dado un número entero
mayor a 0 que representa las n habitaciones/camareros regrese una secuencia
con el estado final de las puertas al llevar a cabo el proceso previamente indicado.
Ejemplos
Para n = 5
Camarero | Puerta 1 | Puerta 2 | Puerta 3 | Puerta 4 | Puerta 5
----------+----------+----------+----------+----------+---------
Inicial | Cerrada | Cerrada | Cerrada | Cerrada | Cerrada
1 | Abierta | Abierta | Abierta | Abierta | Abierta
2 | Abierta | Cerrada | Abierta | Cerrada | Abierta
3 | Abierta | Cerrada | Cerrada | Cerrada | Abierta
4 | Abierta | Cerrada | Cerrada | Abierta | Abierta
5 | Abierta | Cerrada | Cerrada | Abierta | Cerrada
Para n = 8
Camarero | Puerta 1 | Puerta 2 | Puerta 3 | Puerta 4 | Puerta 5 | Puerta 6 | Puerta 7 | Puerta 8
----------+----------+----------+----------+----------+----------+----------+----------+---------
Inicial | Cerrada | Cerrada | Cerrada | Cerrada | Cerrada | Cerrada | Cerrada | Cerrada
1 | Abierta | Abierta | Abierta | Abierta | Abierta | Abierta | Abierta | Abierta
2 | Abierta | Cerrada | Abierta | Cerrada | Abierta | Cerrada | Abierta | Cerrada
3 | Abierta | Cerrada | Cerrada | Cerrada | Abierta | Abierta | Abierta | Cerrada
4 | Abierta | Cerrada | Cerrada | Abierta | Abierta | Abierta | Abierta | Abierta
5 | Abierta | Cerrada | Cerrada | Abierta | Cerrada | Abierta | Abierta | Abierta
6 | Abierta | Cerrada | Cerrada | Abierta | Cerrada | Cerrada | Abierta | Abierta
7 | Abierta | Cerrada | Cerrada | Abierta | Cerrada | Cerrada | Cerrada | Abierta
8 | Abierta | Cerrada | Cerrada | Abierta | Cerrada | Cerrada | Cerrada | Cerrada
Pruebas
=> (estado-de-las-puertas 5)
(true false false true false)
=> (estado-de-las-puertas 8)
(true false false true false false false false)
=> (estado-de-las-puertas 7)
(true false false true false false false)
=> (estado-de-las-puertas 3)
(true false false)
=> (estado-de-las-puertas 4)
(true false false true)
;; n debe ser mayor a 0
=> (estado-de-las-puertas 0)
()
=> (estado-de-las-puertas -3)
()
;; n debe ser un número entero
=> (estado-de-las-puertas \ñ)
()
=> (estado-de-las-puertas [1 2 3])
()