問題タブ [prolog-setof]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
prolog - swi-prolog クエリから 1 つの出力のみを取得するにはどうすればよいですか?
SWI-Prolog クエリから出力を 1 つだけ取得するにはどうすればよいですか? カット ( !
) を使用してみましたが、うまくいかないようです。
例:私はすでに自分の知識ベースをステートメントで満たしていて、女性であり、誰かの母親である名前を見つけたいと思っていました。
私はすでに試しました:
...しかし、それは私にすべてを与えX-__
ますY-__
私も試しました:
...しかし、それでもX-__
との両方が得られますY__
を見つけたいだけですX
。どうにかして1つだけ入手するためのヒントはありますか?
prolog - プロローグ、setOf リストから最大値を見つける
私は、どの国が最大の面積を持っているかを出力することを目的とする述語を持っています(最大の国境=最大の面積を持つ国)。これは私の述語がどのように見えるかです:
その述語内で使用される述語は次のとおりです。
ここで私が間違っていることを誰かに教えてもらえますか? すべての国をリストに追加してから、リストに入れながら 1 つずつ印刷するのではなく、リストをトラバースして最大の境界線を持つ国を見つけるにはどうすればよいですか? 前もって感謝します。
prolog - プロローグで静的プロシージャ setof/3 を満たす権限がありません
私は SWI プロローグを使用しており、ソース コードで setof をどのように使用できるか疑問に思っていました。
私はファイルを持っています:prolog_example.pl
これにはいくつかの事実があります:
ここで、すべての西チームと北チームのセットを別のリストに取得したいと考えています。だから私は置く:
setof(X-Y, canMatch(X,Y), ListOfMatches).
私のソースコード内。ただし、これを SWI-Prolog でコンパイルまたは実行しようとすると、次のエラーが発生します。
ただし、ファイルがロードされたら (そして setof 行を取り出すと) setof をクエリとして提示すると、必要な正しい答えが得られます。では、ソース コードで setof を使用するにはどうすればよいでしょうか。
prolog - findall/setof で複数の述語をプロローグする
次の事実とルール (簡略化) を使用して、ギリシャ神話のミューズの祖先を見つけようとしています。
および祖先ルールは次のmuse
ように定義されます。
私は基本的に次のことをしたい:
これは機能せず、 を返しますfalse
。私が試した別のバリアント:
しかし、より多くのparent
事実があることを考えると、考えられるすべてのancestor
バッグを反復するだけです。
私が試した最後のバリアント:
しかし、それは次のようにエラーになります:
これは理にかなっています。
次のような結果を書き込めるようにしたい:
私は何を間違っていますか?
prolog - 一致する述語を持つすべての事実を見つける
私は関係でいっぱいのファクトベースを持っていますinteracts
:
そして、2 つの薬物が相互作用するかどうかを判断する関数:
与えられた 2 つの薬物の相互作用効果をすべてリストアップしようとしています。2 つの薬が相互に作用する ( interacts_with()
return true
) 場合、相互作用する 2 つの薬の副作用を収集するにはどうすればよいでしょうか?
例えば:
返す必要があります:
を試してみましたがfindall/3
、渡したものだけが、存在するより多くの一致を含むリストに返されます:
編集
@false が提案したものを実装しようとしました:
そして今、私は得ています:
渡された薬物のリストではなく、setof
との両方findall
が返されます。false
prolog - プロローグ - Bagof の使用
試験勉強中に過去問で行き詰まりました。
質問は:
https://gyazo.com/ee2fcd88d67068e8cf7d478a98f486a0
findall/bagof/setof
一連のソリューションを収集する必要があるため、使用する必要があると考えました。さらに、setof
リストは降順で表示する必要があるため、適切と思われます。
これまでの私の解決策は次のとおりです。
ただし、問題は、1 つのリストですべての回答が得られないことです。Team^ を間違って使用している可能性が非常に高いです。ポイントに関して順序付けられたタプルのリストを取得する方法についてのポインタを本当に感謝します。それが私に与える出力は次のとおりです。
また、どのような順番で並んでいるのかがよくわからないので、どのように並んでいるのかもわからなくなってしまいsetof
ます。
setof を使用してこの質問にアプローチする最良の方法は何ですか?
ありがとう。