Skip to content

Caballeros y escuderos: acertijo 0

Jesús Arroyo Torrens edited this page May 29, 2017 · 7 revisions

Enunciado

En la isla de los caballeros y los escuderos se encuentran dos habitantes: A y B. A dice «B es un escudero». ¿Qué podemos determinar?


Descripción formal

En la isla de los caballeros y los escuderos se encuentran dos habitantes: A y B.

Tenemos dos parámetros de entrada A y B.


A dice «B es un escudero».

A dice una única frase P (+info):

A ↔ P

Definimos la frase P como «B es un escudero». Si la frase fuera verdadera (1), B sería un escudero (0). Y al contrario, si P fuera falsa (0), B no sería un escudero, sino un caballero (1). Esto significa que la frase de A se define como la operación de negación sobre B, es decir:

A: P = ¬B


¿Qué podemos determinar?

Circuito digital

Entradas y salidas

Añadimos las entradas A y B (conectadas a LED0 y LED1, respectivamente) y una señal de salida S (conectada a LED7) que se activará cuando el circuito encuentre una solución.

A ↔ P

La operación bicondicional se implementa mediante una puerta XNOR (+info). Con esta puerta podemos determinar si un escudero (0) miente (0) o si un caballero (1) dice la verdad (1), o lo que es lo mismo, si la frase dicha por cada habitante es coherente y no genera contradicciones.

A: P = ¬B

Vamos a representar la ecuación de negación con una puerta NOT (+info).

Descargar circuito final en Icestudio

Resolución en FPGA

Para resolver el circuito le 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

Solución

Al sintetizar y descargar el circuito aparece una solución válida (0, 1). Pulsando el botón Next (SW2) se encuentra otra solución válida (1, 0). Al pulsar de nuevo llega al final sin encontrar más soluciones.

Por lo tanto tenemos dos soluciones posibles:

(0, 1)
(1, 0)
  • (A, B) = (0, 1). A es escudero y B es caballero
  • (A, B) = (1, 0). A es caballero y B es escudero

En base a estos resultados lo único que podemos afirmar es que A y B son de distinto tipo.

Conclusiones

Referencias

  • Raymond Smuyllan, ¿Cómo se llama este libro? Capítulo 3: Caballeros y Escuderos (1989) Ediciones Cátedra, S.A. [1]