聘我网

新概念招聘3.0

用prolog来解一道逻辑分析题

vote up0vote downstar

原题在此处

prolog作为数理逻辑的产物,用它来解决此类问题是再合适不过了:

criminal(K):-
    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

也可以这样:

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.

从而得出结果

更新

中间涉及的一些语法包括:

=:=表示等于

:-用来定义规则

=表示unify

\=表示=的否定

,表示且

;表示或

更新

**表示指数

更多参见此处

 

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.