El rompecabezas original "Blue Eyes" se da aquí (y a continuación).
Un grupo de personas con una variedad de colores de ojos viven en una isla. Todos son lógicos perfectos: si una conclusión se puede deducir lógicamente, lo harán al instante. Nadie sabe el color de sus ojos. Todas las noches a medianoche, un ferry se detiene en la isla. Todos los isleños que hayan descubierto el color de sus propios ojos abandonan la isla y el resto se queda. Todos pueden ver a todos los demás en todo momento y llevar un recuento de la cantidad de personas que ven con cada color de ojos (excluyéndose a sí mismos), pero de lo contrario no pueden comunicarse. Todos en la isla conocen todas las reglas en este párrafo.
En esta isla hay 100 personas de ojos azules, 100 personas de ojos marrones y el Guru (ella tiene los ojos verdes). Por lo tanto, cualquier persona de ojos azules puede ver a 100 personas con ojos marrones y 99 personas con ojos azules (y una con ojos verdes), pero eso no le dice el color de sus ojos; por lo que él sabe, los totales podrían ser 101 marrones y 99 azules. O 100 marrones, 99 azules, y podría tener los ojos rojos.
Al Guru se le permite hablar una vez (digamos al mediodía), en un día en todos sus años interminables en la isla. De pie ante los isleños, ella dice lo siguiente:
"Puedo ver a alguien que tiene los ojos azules".
¿Quién sale de la isla y en qué noche?
La respuesta es que todos se van el centésimo día. Esto se debe a la siguiente lógica:
Si solo hay una persona de ojos azules, se irá el día 1. Si solo hay personas de dos ojos azules, nadie se irá el día 1. Después de esto, ambos se irán el día 2. Ahora si hay 3 azules de ojos azules, nadie se va el día 1. Nadie se va el día 2 tampoco. Ahora todos saben que hay 3 personas de ojos azules, porque si hubiera solo una, se habría ido el día 1 y si hay dos, ambas se habrían ido el día 2. Por lo tanto, las 3 se van el día 3.
Ahora podemos escribir una prueba inductiva de que si n personas de ojos azules requieren n días para descubrir sus colores de ojos y se van, entonces n + 1 personas de ojos azules requieren n + 1 días para hacer lo mismo.
Sin embargo, el código que escriba debe ser capaz de resolver no solo el rompecabezas original, sino también algunas variantes que requieren pasos inductivos ligeramente diferentes.
Se le dirá cuántos isleños tienen ojos azules y cuántos no. También recibirá una declaración del oráculo (un sistema de ecuaciones / inecuaciones) que todos en la isla escuchan. Debe determinar cuándo la isla estará libre de personas de ojos azules.
Las declaraciones del oráculo se usarán b
para la cantidad de personas de ojos azules y r
para la cantidad de personas que no tienen ojos azules. Las ecuaciones pueden incluir < > <= >= = + -
y cualquier número entero.
Casos de prueba
Basado en este conjunto de variantes
50 50
b>=1
b<b+r
Salida: 50
La segunda ecuación no proporciona información nueva, por lo tanto, este problema se vuelve exactamente el mismo que el rompecabezas original.
100 50
b+3>=r+4
Salida: 25
100 0
b-2>8+1-1
Salida: 90
50 50
b>=10
b<=75
Salida: 41
3b<2r
?
b+b+b < r+r
lugar.
b>10
, no b>=10
, por lo que la salida debería ser 90
, no 91
.