prolog - 使用 Prolog 解决逻辑难题

标签 prolog puzzle

罪犯是 A、B、C 和 D 之一。

A says: "It's not me"
B says: "It's D"
C says: "It's B"
D says: "It's not me"



我们知道只有其中一个说的是实话。

谁是那个?我想通过使用 Prolog 来解决它。

是面试题。

最佳答案

单线解决方案

?- member(K,[a,b,c,d]),(K\=a->A=1;A=0),(K=d->B=1;B=0),(K=b->C=1;C=0),(K\=d->D=1;D=0),A+B+C+D=:=1.
K = a,
A = 0,
B = 0,
C = 0,
D = 1 ;
false.

关于prolog - 使用 Prolog 解决逻辑难题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1939054/

相关文章:

algorithm - 如何使用独特的解决方案生成数独板

prolog - SICStus 序言 : statistics/2 values affected by JIT

string - 从 Prolog 中的字符串中删除空格

parsing - 列表成员实例化时约束不会传播

找到具有最大总和的n个数字的组合的算法

Haskell Monad 函数

prolog - 使用 Prolog 中的累加器计算多项式的计算问题

prolog - 限制整数在集合中

algorithm - 包含不超过 11 个点的最大圆

java - 用 C 和 Java 解决数字难题