Hace unos días/semanas planteé un acertijo, llamado Algoritmos humanos, que me pasaron por una lista de correo. Hace poco me he acordado de que no he puesto la solución, así que aquí viene.
Si no lo has leído antes, échale un ojo aquí.
Antes de nada, decir que me la solución me parece un poco timo. Especialmente porque el enunciado me parece poco claro o no bien planteado. Pero como no es cosa mía, las quejas al autor. Yo me lavo las manos.
Para empezar, la condición es saber si han pasado todas las personas por la sala como mínimo una vez. No importa si cuando se diga han pasado 800 veces, pero si que se ha de poder asegurar.
Para esto, se decide que una de esas personas será el contador. Se ha de tener presente que el interruptor será la única cosa que se puede "modificar".
La secuencia seria la siguiente:
1.- Se decide que el interruptor hacia arriba es ON y hacia abajo será OFF.
2.- Cada vez que alguien sea llamado a la sala y el interruptor esté en OFF, lo pondrá a ON solo una vez.
Es decir, si cuando llega el interruptor está a ON, no hará nada.
Si cuando llega el interruptor está a OFF y es la primera vez que ve el interruptor en OFF, lo pondrá a ON.
Si cuando llega el interruptor está en OFF, pero en otra visita ya lo ha puesto a ON, lo dejará en OFF.
3.- Cada vez que el contador pase por la sala hará lo siguiente:
Si es la primera vez que viene a la sala, asumirá el valor 1.
Si el interruptor está en ON, sumará 1 a su valor y pondrá el interruptor a OFF.
Si el interruptor está en OFF, no hará nada y mantendrá su valor.
En el momento en el que el contador llegue a 100, sabrá que todos los demás han pasado como mínimo una vez por la sala y podrá avisar a los organizadores.
¿Que os parece?






