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.とやってみました。
回答を見る
  • ベストアンサー

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. とやってみました。

  • arcsin
  • お礼率46% (194/417)

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10262)
回答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

  • Smart ARP とは?

      ウイルス対策ソフト [Panda Cloud Antivirus PRO] で検出!!                                 Smart ARP とは?  ウイルス対策ソフト[Panda Cloud Antivirus PRO]が、現在すごく評判いいというのをあちこちで聞くので、先日から使用してます。 なので、使い方や、見方などがまだサッパリわかりませんので、お手柔らかに回答をお願いします。  [Panda Cloud Antivirus PRO]の“イベントレポート”ってのを見ると以下の様に記載がありました。   【イベント】 - 侵入の試み    【詳細】 - 攻撃タイプ:Smart ARP  【日付/時刻】 - 2013/06/29 4:11  【ステータス】 - ブロックしました   【ソース】 - MAC アドレス 06:3A:9D:A9:9F:79   =いったい!どいうことで、“Smart ARP”とは何なんでしょうか?=          ウイルス? スパイウェア? サイバー攻撃?                     回答お待ちしております。 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ・Panda Cloud Antivirus 公式サイト http://www.cloudantivirus.com/  ・Panda Cloud Antivirus ウィキペディア http://ja.wikipedia.org/wiki/Panda_Cloud_Antivirus  ・Panda Security Japan (日本語) 公式サイト ※国内でPanda Security 社の企業向け及び個人向け製品の販売、サポートを行う「PS Japan 株式会社」 http://www.ps-japan.co.jp/  ・Panda Security ウィキペディア http://ja.wikipedia.org/wiki/Panda_Security

  • 日本をジャパンと呼ぶのは

    日本はジャパン、韓国はコリア、中国はチャイナのように国名が英語になっていますがアメリカはアメリカ、フランスはフランスのような国もあります。なぜ日本はジャパンなのでしょうか?外国人は「ジャパン」と言いますが「ニッポン、又はニホン」でいいのでは?また中国人は自分の国を言う時は「チャイナ」それとも「チュウゴク」どのように言ってるのでしょうか?日本という固有名詞が英語になっているのが不思議に思いましたのでその辺のことをおしえて下さい。

  • アメリカから日本への郵便について

    アメリカから日本へ書類を送りたいのですが、封筒の表側に記入する送り先の氏名と郵便番号・住所は、日本語で書いて、最後にJAPANと記載すればそれで日本へ無事着きますか? 例えば、 〒123-1234 東京都新宿区○○町1-2-3 山田太郎様 JAPAN という具合に書いても届くでしょうか? (イギリスに住んでおりました頃は、これで日本へ届いたのですが、ここアメリカでは郵便を送ったことがないので、自信がなく・・・) よろしくお答え願います。

  • アメリカでの出産の際の日本への出生届について

    在米で、来月出産予定です。 日本への出生届けの書き方についてご存知の方、ご教示ください。 名付けについて、日本名をファーストネーム、ミドルネームで洋風なものを付ける予定です。 (例えば、山田 太郎 マイケルのような感じです。アメリカでは、Taro Michael Yamada となるように届けます。) その際、日本への出生届けは、「名」の欄に「太郎 マイケル」と表記したら良いのでしょうか? それとも、日本へは「太郎」だけで、届出をしたほうが良いのでしょうか? 「太郎 マイケル」とした場合、すべてに日本の書類で、「名」が「太郎マイケル」になってしまいますか? 役所の書類がすべて、「太郎マイケル」になってしまった場合、日本での就学時なども、「名」の扱いでマイケルも表記されることになるのでしょうか?? もし、そのようになって子供が恥ずかしい思いをするのを避けるためには、日本にはファーストネームのみの届出のが良いのかなとも思いますが、同じようなご経験のある方がいらっしゃいましたら教えていただければと思います。 よろしくお願いいたします。

  • NipponとJapan

    日本(Nippon)という言葉は、国際的に認知されているんでしょうか。 わたしは、我が国には「日本」という国名があるのに、いろいろな場面でやたらと「Japan」などという言葉を使うのを苦々しく思っているんです。アメリカは世界中どこに行っても「アメリカ」でしょ?

  • Introduceの間違った使い方

    たとえば、「あなたに私の家内を紹介したい」だったら、英語で何というでしょうか? I'd like to introduce my wife to you. でしょうか、それとも I'd like to introduce you to my wife. でしょうか?日本の英辞書(たとえば、手元にある「小学館プログレッシブ英和中辞典第4版」には「introduce A(人)to B(人)」は、「AをBに紹介する」とあり、Let me introduce Mr.Brown to you.(ブラウン氏をご紹介します。)という例が挙げられています。この説明からすると、前者が正しいことになり、実際、ネットで検索すると、「yahooの知恵袋」のサイトでは、前者が正解で、後者は間違いだとする回答がベストアンサーに選ばれています(↓)。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1377034913 たしかに、私を含めて日本人の感覚からすると、「あなたに私の家内を紹介したい」だったら、前者が正しいように見えます。しかし、この場合、ネイティブの感覚からすると、前者は間違いで、後者の I'd like to introduce you to my wife. 正しいはずです。あなたが学校の(英語の)教師で、新しく山田太郎という生徒が転校してきてほかの生徒の前で彼を紹介し、「皆さんに山田太郎君を紹介します」と言いたいなら、 I' d like to introduce you to Mr. Taro Yamada. あるいは Let me introduce you to Mr. Taro Yamada. とするのが正しいでしょう。実際、ネットにもintroduceの正しい使い方を教えているサイトもありました。リンクはここ(↓) http://fromexperience.info/native-eikaiwa/introduce.html このように、introduceの使い方についてわれわれ日本人の間に(英和辞書をふくめて)混乱がありますが、英語のintroduceと日本語の「紹介する」との間には意味合いに違いがあり、2つの言葉の対応関係が悪いためなのでしょうか?

  • 外国で、山田太郎やジョン・スミスのようにありふれた名前は何ですか

    日本では、ありふれた名前の代表は「山田太郎」だと思います。 アメリカやイギリスでは、ありふれた名前の代表は「ジョン・スミス John Smith」だと思います。 それでは、アメリカ、イギリス以外の外国で、その国で一番ありふれた名前の代表は何でしょうか? アメリカ、イギリス以外の外国で、「山田太郎」、「ジョン・スミス」に匹敵するありふれた名前を教えて下さい。

  • オンライン人名辞書

    オンライン/オフラインで使用可能なフリーの日本人人名辞書を探しています。 出来れば漢字、ローマ字が対応しているようなもので (「taro 太郎」みたいな)フリーならなお良しです。 苗字もあればもっと良し。 ローマ字だけでもいいですが、漢字だけだとダメ。 使用目的は個人的使用であり、ローカルな環境でのみ使用し、 営利目的ではありません。 どこかに無いでしょうか?

  • 英語のことで教えて下さい!

    「もしあなたが日本に来るならどこに行きたいですか?」を英語にすると「Where would you like to go if you came to Japan?」でcomeのところは過去形になるんですよね? 「もしあなたがアメリカに行くならどこに行きたいですか?」を英語にすると「Where would you like to go if you go to America?」で合っていますか?goのところは過去形にするのか、そもそもこの英語はおかしいのかが分かりません(>_<) 初歩的な質問で申し訳ないのですがどなたか教えて下さいm(_ _)m

  • 日本生まれハーフにミドルネームはつけられますか?

    随分前にアメトークでハーフのテーマをやっていました。 その時ゲストのハーフの人が成人した時親に、自分にミドルネームがある事を初めて告白されたと言っていましたが…… 日本で生まれたハーフの子供にはミドルネームが付けられないはずではありませんでしたか? 日本は基本的 苗字・名前 の二つなのでミドルネームを入れる覧はないし、 仮にハーフの子がミドルネームを入れるとしたら、性・名のどちらかに合体した感じで 例) 山田スミス 太郎  or 山田 スミス太郎 上記のような感じになりませんか? 仮に上記の様にミドルネームが合体した場合だったら学校や保険証・免許証など公の証明書などでは本名で書かないといけないので、いずれ本人は気付くはずではありませんか? それとも日本と片親の国とでは名前の表記が違ったりするのですか? 例)  日本→ 山田スミス 太郎   and 片親の国→ YAMADA Smith Taro もしかしたら私の考え違いかと思いますが、だったらどのようなしくみになってるのでしょうか? (そもそも日本生まれと外国生まれのハーフではミドルネームの付け方が変わりますか?) 文才がないから、聞きたい事が上手く伝わるか分かりませんが… 是非教えてください。