-
Notifications
You must be signed in to change notification settings - Fork 2
Caballeros y escuderos: acertijo 6
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 es un escudero»
A dice una única frase P (+info):
A ↔ P
La sentencia P afirma que B es un escudero (0). Por lo tanto:
A: P = ¬B
y
Deben ser coherentes ambas sentencias:
A ↔ P ∧ B ↔ Q
B dice «A y C son del mismo tipo».
B dice una única frase Q (+info):
B ↔ Q
La sentencia Q afirma que A y C son del mismo tipo:
B: Q = (A ↔ C)
¿Qué es C?
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
B ↔ Q
Como tenemos dos operaciones bicondicionales utilizaremos dos puerta XNOR (+info).
A ↔ P ∧ B ↔ Q
Para encontrar una solución válida ambas sentencias deben ser coherentes. La forma de asegurar esto es mediante una puerta AND (+info).
A: P = ¬B
La sentencia P se representa con una puerta NOT (+info) sobre la señal B.
B: Q = (A ↔ C)
La sentencia Q se representa con una puerta XNOR (+info) entre las señales A y C.
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 dos soluciones válidas:
(1, 0, 0) |
---|
(0, 1, 0) |
---|
Tenemos que (A, B, C) = (?, ?, 0). No podemos determinar qué son A y B pero sí sabemos que C es un escudero.
- Para n sentencias utilizamos n puertas XNOR
- Una puerta AND permite validar que todas las señales valen 1
- Raymond Smuyllan, ¿Cómo se llama este libro? Capítulo 3: Caballeros y Escuderos [34] (1989) Ediciones Cátedra, S.A. [1]