如何根据特定属性排除记录?

时间:2016-01-21 00:08:01

标签: prolog

假设你有一个程序

book('Hps','Pages','twohundred').
book('Lww','Pages','onehundred').
book('Aff','Pages','onehundred').
book('Jin','Pages','onehundred').

book('Hps','Colour','Black'). book('Lww','Colour','Red'). book('Aff','Colour','Red'). book('Jin','Colour','Black').

而且你想要找到所有长达一百页的书籍,但是你想要排除黑色的书籍,你会怎么做呢?

我有以下规则

bookohpnb(X) :- book(Y,_,'onehundred'), book(Y,_,

但我无法弄清楚如何以一种排除黑色图书结果的方式完成它。

我知道我可以让程序找到红色,但我给出的例子是一个更大的程序的一小部分,在更大的程序中有更多的记录。

1 个答案:

答案 0 :(得分:0)

多年来,我没有在prolog中编码,所以如果它不起作用,请原谅我:

bookohpnb(X) :-
    book(Y,_,'onehundred'),
    book(Y,_,C),
    not(C = 'black').