• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:prologでorみたいなことをするには・・)

prologでorみたいなことをするには・・

このQ&Aのポイント
  • prologでorみたいなことをするには
  • like(人,動物)は「人」が好きな動物の対応を。国(動物、数字)は「国」での「動物」の売価として、like(taro,inu).like(taro,neko).like(taro,panda).japan(inu,200000).japan(neko,100000).japan(panda,100000000).america(inu,180000).america(neko,110000).america(panda,90000000).という対応があった場合
  • 太郎が好きな動物で、日本かアメリカで190000以下で売られている動物名を知りたい。という場合はどう書けばいいでしょう。(この答えはinuとnekoになるはず・・・)。連言(AND)はカンマで区切ればいいのはわかるのですが、orの仕方がわかりません;;。「太郎が好きで、日本で190000以下で売られている動物」は ?-like(taro,A),japan(A,B),B<190000.とやってみました。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

prologを触ったのは随分昔なので自信なしですが、 ?-line(taro,A),(japan(A,B);america(A,B)),B<190000. と、; でorを使える処理系もあると思います。 別案としては、 like(taro,inu). like(taro,neko). like(taro,panda). kakaku(japan,inu,20000). ...(中略)... kakaku(america,panda,90000000). にして、 ?-like(taro,A),kakaku(B,A,C),C<190000. という手もあると思います。

参考URL:
http://www.geocities.co.jp/SiliconValley-Oakland/1680/prolog/
arcsin
質問者

お礼

ありがとうございます。 処理系はSWI-Prologなのですが、notnotさんにアドバイス頂いた ?-line(taro,A),(japan(A,B);america(A,B)),B<190000. とすると、 ERROR: Arguments are not sufficiently instantiated と出てきてしまいます…ためしにc言語みたいに|をつかってみましたが、同じエラーがでました。 なるべく元の対応表を変更しないで問い合わせしたいのですが、後者の方法しか無いでしょうか^^;

arcsin
質問者

補足

ごめんなさい、できました^^ 打ち間違いでした。 ありがとうございます!

関連するQ&A