我的问题很简单,iI理解我必须做什么,但我似乎不能代表我的理解。如何根据NAND门规则编写谓词来定义门,如XOR或NOR?
例如:
nand(t,t,f).
nand(t,f,t).
nand(f,t,t).
nand(f,f,t).上面是nand门的真值表。现在,如果我想在Prolog中使用上面的术语来定义XOR门,例如,我需要向Prolog询问关于XOR(X,Y,Z)的问题,它会给我三个可能的答案,我应该如何构建一个谓词来定义它?
谢谢
发布于 2017-03-22 14:54:04
困难的部分是根据nand门设计表达式。假设我们信任this question:那么一个解决方案可能是
xor(A,B,C) :-
nand(A,B,O1),
nand(A,O1,O21),
nand(B,O1,O22),
nand(O21,O22,C).测试:
?- setof(X/Y/Z,xor(X,Y,Z),L).
L = [f/f/f, f/t/t, t/f/t, t/t/f].https://stackoverflow.com/questions/42942935
复制相似问题