拆分列表并在prolog中迭代

时间:2013-11-10 05:37:18

标签: list prolog artificial-intelligence

我试图做一些看起来非常简单但我无法理解的事情。我想从给定的谓词中拆分prolog中的列表并迭代对象。 例如:

object_properties(jackass, [comedy, -australian]).
object_properties(the_godfather, [drama, crime, -character_batman]).

如何迭代列表并将其打印到屏幕上?更具体地说,我需要询问用户该对象是否具有该属性。如果他们说是,则转到列表中的下一个项目,如果他们说没有移动到下一个对象。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这样的事情可以帮助你开始

object_properties :-
    object_properties(O, Ps),
    query_user_loop(O, Ps).

query_user_loop(_, []).
query_user_loop(O, [P|Ps]) :-
    write([object, O, has, P, ?]),
    read(Answer),
    (   Answer == yes
    ->  query_user_loop(O, Ps)
    ).

object_properties(jackass, [comedy, -australian]).
object_properties(the_godfather, [drama, crime, -character_batman]).

这适用于简单的交互(请注意每个答案后的点):

9 ?- object_properties.
[object,jackass,has,comedy,?]yes.
[object,jackass,has,-australian,?]no.
[object,the_godfather,has,drama,?]yes.
[object,the_godfather,has,crime,?]yes.
[object,the_godfather,has,-character_batman,?]yes.
true