-
Notifications
You must be signed in to change notification settings - Fork 2
Caballeros y escuderos: acertijo 5
En la isla de los caballeros y los escuderos se encuentran tres habitantes: A, B y C.
Tenemos tres parámetros de entrada A, B y C.
A dice, «B y C son del mismo tipo».
A dice una única frase P (+info):
A ↔ P
La sentencia P afirma que B y C son del mismo tipo: son ambos caballeros (1) o ambos escuderos (0). Por lo tanto:
A: P = (B ↔ C)
Alguien pregunta entonces a C, «¿Son A y B del mismo tipo?». ¿Qué responde C?
Si A y B fueran del mismo tipo y C fuera caballero o si A y B fueran de distinto y C fuera un escudero debería responder «Sí». En los casos contrarios respondería «No». Veamos qué podemos determinar.
Entradas y salidas
Añadimos las entradas A, B y C (conectadas a LED0, LED1 y LED2, respectivamente) y una señal de salida S (conectada al LED7) que se activará cuando el circuito encuentre una solución.
A ↔ P
La operación bicondicional se implementa mediante una puerta XNOR (+info).
A: P = (B ↔ C)
La sentencia P indica otra relación bicondicional, entre B y C, por lo que utilizaremos otra puerta XNOR.
Descargar circuito en Icestudio
Para resolver el circuito añadimos un bloque que comprueba todas las posibilidades y encuentra la solución o soluciones correctas (+info). Sintetizamos este circuito en la FPGA.
Descargar circuito de pruebas en Icestudio
Al sintetizar y descargar el circuito obtenemos cuatro soluciones distintas (accedemos a ellas pulsando el botón Next):
(1, 0, 0) |
---|
(0, 1, 0) |
---|
(0, 0, 1) |
---|
(1, 1, 1) |
---|
Deducimos que si C es escudero: (1, 0, 0) (0, 1, 0), A y B son de distinto tipo. Si C es caballero: (0, 0, 1) (1, 1, 1), A y B son ambos escuderos o ambos caballeros, por lo que a la pregunta «¿Son A y B del mismo tipo?», C respondería siempre «Sí».
- Una puerta XNOR permite determinar si dos señales son iguales
- Raymond Smuyllan, ¿Cómo se llama este libro? Capítulo 3: Caballeros y Escuderos [35] (1989) Ediciones Cátedra, S.A. [1]