問題タブ [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.

0 投票する
1 に答える
748 参照

prolog - swi-prolog クエリから 1 つの出力のみを取得するにはどうすればよいですか?

SWI-Prolog クエリから出力を 1 つだけ取得するにはどうすればよいですか? カット ( !) を使用してみましたが、うまくいかないようです。

例:私はすでに自分の知識ベースをステートメントで満たしていて、女性であり、誰かの母親である名前を見つけたいと思っていました。

私はすでに試しました:

...しかし、それは私にすべてを与えX-__ますY-__

私も試しました:

...しかし、それでもX-__との両方が得られますY__

を見つけたいだけですX。どうにかして1つだけ入手するためのヒントはありますか?

0 投票する
1 に答える
577 参照

prolog - プロローグ、setOf リストから最大値を見つける

私は、どの国が最大の面積を持っているかを出力することを目的とする述語を持っています(最大の国境=最大の面積を持つ国)。これは私の述語がどのように見えるかです:

その述語内で使用される述語は次のとおりです。

ここで私が間違っていることを誰かに教えてもらえますか? すべての国をリストに追加してから、リストに入れながら 1 つずつ印刷するのではなく、リストをトラバースして最大の境界線を持つ国を見つけるにはどうすればよいですか? 前もって感謝します。

0 投票する
0 に答える
89 参照

prolog - プロローグで静的プロシージャ setof/3 を満たす権限がありません

私は SWI プロローグを使用しており、ソース コードで setof をどのように使用できるか疑問に思っていました。

私はファイルを持っています:prolog_example.plこれにはいくつかの事実があります:

ここで、すべての西チームと北チームのセットを別のリストに取得したいと考えています。だから私は置く:

setof(X-Y, canMatch(X,Y), ListOfMatches).

私のソースコード内。ただし、これを SWI-Prolog でコンパイルまたは実行しようとすると、次のエラーが発生します。

ただし、ファイルがロードされたら (そして setof 行を取り出すと) setof をクエリとして提示すると、必要な正しい答えが得られます。では、ソース コードで setof を使用するにはどうすればよいでしょうか。

0 投票する
1 に答える
2682 参照

prolog - findall/setof で複数の述語をプロローグする

次の事実とルール (簡略化) を使用して、ギリシャ神話のミューズの祖先を見つけようとしています。

および祖先ルールは次のmuseように定義されます。

私は基本的に次のことをしたい:

これは機能せず、 を返しますfalse。私が試した別のバリアント:

しかし、より多くのparent事実があることを考えると、考えられるすべてのancestorバッグを反復するだけです。

私が試した最後のバリアント:

しかし、それは次のようにエラーになります:

これは理にかなっています。

次のような結果を書き込めるようにしたい:

私は何を間違っていますか?

0 投票する
1 に答える
1438 参照

prolog - 一致する述語を持つすべての事実を見つける

私は関係でいっぱいのファクトベースを持っていますinteracts:

そして、2 つの薬物が相互作用するかどうかを判断する関数:

与えられた 2 つの薬物の相互作用効果をすべてリストアップしようとしています。2 つの薬が相互に作用する ( interacts_with()return true) 場合、相互作用する 2 つの薬の副作用を収集するにはどうすればよいでしょうか?

例えば:

返す必要があります:

を試してみましたがfindall/3、渡したものだけが、存在するより多くの一致を含むリストに返されます:


編集

@false が提案したものを実装しようとしました:

そして今、私は得ています:

渡された薬物のリストではなく、setofとの両方findallが返されます。false

0 投票する
1 に答える
475 参照

prolog - プロローグ - Bagof の使用

試験勉強中に過去問で行き詰まりました。

質問は:

https://gyazo.com/ee2fcd88d67068e8cf7d478a98f486a0

findall/bagof/setof一連のソリューションを収集する必要があるため、使用する必要があると考えました。さらに、setofリストは降順で表示する必要があるため、適切と思われます。

これまでの私の解決策は次のとおりです。

ただし、問題は、1 つのリストですべての回答が得られないことです。Team^ を間違って使用している可能性が非常に高いです。ポイントに関して順序付けられたタプルのリストを取得する方法についてのポインタを本当に感謝します。それが私に与える出力は次のとおりです。

また、どのような順番で並んでいるのかがよくわからないので、どのように並んでいるのかもわからなくなってしまいsetofます。

setof を使用してこの質問にアプローチする最良の方法は何ですか?

ありがとう。