3

私は本当に単純に思えることをしようとしていますが、頭を悩ませています。指定された述語からプロローグのリストを分割し、オブジェクトを反復処理したいと考えています。例:

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

リストを反復処理して画面に出力するにはどうすればよいですか? 具体的には、オブジェクトにプロパティがあるかどうかをユーザーに尋ねる必要があります。彼らが「はい」と答えた場合はリストの次の項目に進み、「いいえ」と答えた場合は次のオブジェクトに進みます。

どんな助けでも大歓迎です。

4

1 に答える 1

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 
于 2013-11-10T08:59:42.197 に答える