私が紛失した部分は、main.plにあります。入れたい質問が複数あるとしますが、どうすれば追加できますか?以前のprint_query_falseの下に新しい質問のあるwritelnを追加するだけですか?
はい、例えば:
main :-
nl,
format("1. Did Leonardo DiCaprio act in Babel?"),
nl,
print_query_true(acted_in(leonardo_dicaprio,babel)),
print_query_false(acted_in(leonardo_dicaprio,babel)),
nl,
format("2. Was babel released in 2006?"),
nl,
print_query_true(released(babel, 2006)),
print_query_false(released(babel, 2006)),
nl,
format("3. Did anyone act in both Click and The Aviator?"),
nl,
print_query_true((acted_in(X, click), acted_in(X, the_aviator))),
print_query_false((acted_in(X, click), acted_in(X, the_aviator))),
nl,
format("4. Did sharlto_copley and david_james both act in district_9?"),
nl,
print_query_true((acted_in(sharlto_copley, district_9), acted_in(david_james, district_9))),
print_query_false((acted_in(sharlto_copley, district_9), acted_in(david_james, district_9))),
nl,
format("5. Was there any two movies released in 2006 and 2009?"),
nl,
print_query_true((released(X, 2006), released(Y, 2009))),
print_query_false((released(X, 2006), released(Y, 2009))),
nl,
format("6. What actors acted in babel or district 9?"),
nl,
print_query_true((acted_in(X, babel) ; acted_in(X, district_9))),
print_query_false((acted_in(X, babel) ; acted_in(X, district_9))),
nl,
format("6. What actors played in babel but not in district 9?"),
nl,
print_query_true((acted_in(X, babel), \+ acted_in(X, district_9))),
print_query_false((acted_in(X, babel), \+ acted_in(X, district_9))),
nl,
halt.
私は、出力の適切なフォーマットされた文字列を取得するためにformat
にwriteln
を変更しました。テストの実行:
?- [main].
% movie compiled 0.00 sec, 9 clauses
% main compiled 0.00 sec, 15 clauses
true.
?- main.
1. Did Leonardo DiCaprio act in Babel?
false:acted_in(leonardo_dicaprio,babel)
2. Was babel released in 2006?
true:released(babel,2006)
3. Did anyone act in both Click and The Aviator?
false: (acted_in(_G1551,click),acted_in(_G1551,the_aviator))
4. Did sharlto_copley and david_james both act in district_9?
true: (acted_in(sharlto_copley,district_9),acted_in(david_james,district_9))
5. Was there any two movies released in 2006 and 2009?
true: (released(babel,2006),released(district_9,2009))
6. What actors acted in babel or district 9?
true: (acted_in(brad_pitt,babel);acted_in(brad_pitt,district_9))
true: (acted_in(cate_blanchette,babel);acted_in(cate_blanchette,district_9))
true: (acted_in(sharlto_copley,babel);acted_in(sharlto_copley,district_9))
true: (acted_in(david_james,babel);acted_in(david_james,district_9))
6. What actors played in babel but not in district 9?
true: (acted_in(brad_pitt,babel),\+acted_in(brad_pitt,district_9))
true: (acted_in(cate_blanchette,babel),\+acted_in(cate_blanchette,district_9))
SWI-Prologの素晴らしいドキュメントを持っているので、私はあなたがこれらを完全に理解するために使用述語をチェックすることをお勧め:
最後の問題がありますを通してプログラムをオンにします。しかし、私は[映画]を入力します。それはちょうど真実を言い、それがコンパイルされたか何かのようなものであることを示さない。
ソースファイルがある正しいディレクトリにいることを確認してください。 SW30-Prolog v6.6。4出力:
?- [movie].
% movie compiled 0.00 sec, 9 clauses
true.
質問のタイトルを変更する必要があります。 "Prolog beginner"は質問を記述していないし、あなたのMacBookを使っているという事実(あなたのタイトルの意味であれば)は質問とは無関係に見える。 – lurker