与えられた(ユーザー入力)場所のイベントの会場名と家賃を示すPrologコンソールアプリケーションを作成したいと思います。これまで私は与えられた(ユーザー入力)場所の会場のリストを作成することができました。プロローグ:ファクト内のリストの要素を使用
私のコードは以下の通りです。すべてのリスト要素の家賃を得るためにvenue_rent
実際にvenues
リストを使用する方法は
Enter a location
->washington.
[washington_party_hall1,washington_party_hall2]
true.
あります:
listing(venue_location).
listing(venue_seating).
listing(venue_overhead).
venue_location(washington_party_hall1, washington).
venue_location(washington_party_hall2, washington).
venue_location(newyork_party_hall1, newyork).
venue_location(newyork_party_hall2, newyork).
venue_capacity(washington_party_hall1,300).
venue_capacity(washington_party_hall2,450).
venue_capacity(newyork_party_hall1, 340).
venue_capacity(newyork_party_hall2,500).
venue_rent(washington_party_hall1,1350).
venue_rent(washington_party_hall2,1200).
venue_rent(newyork_party_hall1,1500).
venue_rent(newyork_party_hall2,1000).
main:-
write("Enter a location"),nl,write("->"),
read(Loc),
findall(X,venue_location(X,Loc),Venues),
write(Venues).
これは、次のような出力を提供しますか? 私はこのように彼らの賃料でこれらの会場の名前を表示したい:
washington_party_hall1 1350
washington_party_hall2 1200
「maplist/2」のようなものを探していました。この述語の例を示すよい文書をいくつか用意してください。私はこの述語を頻繁に使用しなければならないかもしれません。 –
@AhashanAlamSojib私は残念なことに、例を持つ良いオンラインドキュメントを見つけられませんでした。しかし、それはかなり簡単です。 'maplist'は、リストがすべて同じ長さであるという一般的な期待に基づいて、1つまたは複数のリストに対して目標を反復します。引数の数にはいくらかの制限があります。たとえば、 'call(goal(a)、b)'が 'call(goal(a、b)) 'と同等であるという事実を使用します。したがって、 'maplist(foo(X、Y)、L1、L2)'は 'L2'の' E1'と 'E2'の各要素' E1'に対して 'foo(X、Y、E1、E2)'を単に呼び出します。 – lurker
いくつかのリスト要素に対して 'maplist/2'の与えられた目標が失敗した場合、プロセスを停止しますか? 'maplist/2'の目標でいくつかのフェイルセーフオプションを使用できますか? –