2013-11-10 44 views
3

我試圖做一些似乎很簡單,但我無法得到我的頭。我想從給定的謂詞中分割一個prolog中的列表並遍歷這些對象。 例如:分裂列表和迭代序言​​

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

如何迭代列表並將其打印到屏幕?更具體地說,我需要詢問用戶該對象是否具有該屬性。如果他們說yes會轉到列表中的下一個項目,如果他們說沒有移動到下一個對象。

任何幫助將不勝感激。

回答

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 
+0

感謝很多答案。這正是我所困惑的。 – Brandon