0
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,_,
但我想不出如何完成它的方式,这将排除这本书成果,这是黑色的。
我知道我可以让程序找到红色的,但我给出的例子只是一个非常大的程序的一小部分,在更大的程序中有更多的记录。
我不认为一个相当有效。如果有帮助,我需要展示一百页的书籍缩写('Hps','Lww''Aff''Jin'),并且不是黑色的。因此,查询“bookohpnb(X)”的第一个结果。将是'Lww' - 打';'而下一个结果将是'Aff'。 –
我的不好,是的,你是对的,这是非常有用的 - 谢谢。 –
你应该用'\ +','\ + C ='Black''来代替'not'。这与'C'='Black''相同。任何方式,最好使用'dif(C,'Black')':参见'dif/2'上的文档来了解更多。同样奇怪的是,您将'book/3'的第二个参数作为一个自由变量:最好说'book(B,'Pages','onehundred'),book(B,'Color',C) ,dif(C,'Black')。' – 2016-01-21 05:50:25