問題タブ [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.
recursion - Prolog すべての述語を検索
私は人のすべての兄弟を見つけようとしています..私は次のルールを作成しました..
ただし、これは機能しますが、人に複数の兄弟がいる場合、単一の兄弟しか見つかりません..何らかの形で再帰を使用する必要があると想定していますが、少し行き詰まっています!
eclipse - SICStus SPIDER でメタ引数の警告を回避するには?
これはおそらくcomp.lang.prolog-discussionに関連しています。
SICStus SPIDER で Eclipse を使用すると、次のような警告がいくつか表示されます。
コードサンプルは次のとおりです。
SPIDER 警告を取り除くにはどうすればよいですか? 単に警告を抑制することにはあまり興味がありません。SPIDER IDE の最新バージョン (0.0.51) と SICStus Prolog 4.2.3 を使用しています。
xml - GOAL での再帰呼び出しでの setof/3 の使用が間違っているのはなぜですか?
の使用に問題がありsetof/3
ます。一部の結果が表示されません。
コンテキスト:
SWI-Prolog load_xml() を使用して xml ファイルをロードし、再帰的なリスト要素を取得します (例の testelement を参照)。次に、このリスト (xml ツリー内) で特定の要素を検索します。と組み合わせて
使用すると、うまく機能します。しかし、 を使用すると、結果が 1 つ失われます。要素を取得/保持するための再帰呼び出しが原因で問題があると思いますか? 再帰リストから要素を取得する別の解決策を知っている人はいますか?findall/3
sort/2
setof/3
setof/3
askElement/3
私のテストコード:
私の出力:
私はどちらの場合でも私が得ると思っていました
どうしたの?
よろしくお願いします!
PS: 私の (初めての) Prolog コードのコメント/レビューは大歓迎です :}
prolog - 毎回返すリストのセット、プロローグ
次のような述語を使用しています。
ここでの問題は、コードがすべての値に対してリスト X を返すことです。私が望むのは、すべての数字を含む大きなリストを返すことです。今すぐ答えが得られるからです。
そのため、毎回小さなリストではなく、すべてを含む大きなリストが必要です。
コメントの編集 ----------
これは私が書いたもので、すぐに偽になります。
prolog - 述語からすべての「最小」ソリューションを収集する
データベースに次の事実があるとします。
最小の 2 番目の引数と 2 番目の引数の値を持つすべての最初の引数を収集したいと考えています。初挑戦:
の代わりにsetof/3
、次を使用できますaggregate/3
。
注意
これは、数値の最小値を探している場合にのみ同じ結果をもたらします。算術式が含まれている場合、結果は異なる場合があります。数値以外が含まれている場合はaggregate(min(...), ...)
、エラーがスローされます!
または、代わりに、キーでソートされた完全なリストを使用できます。
最後に、質問に:
これをライブラリ(集約)で直接行うことはできますか? 出来るはず…という感じです。
std::partition_point
または、C++ 標準ライブラリのような述語はありますか?または、これを行う簡単な方法はありますか?
編集:
より説明的になるために。(ライブラリ) 述語があったとしますpartition_point/4
:
(名前は好きじゃないけど、今は我慢できる)
それで:
prolog - swi-prolog の findall/3 が変数バインディングを無視するのはなぜですか?
次のコードは、これらの結果を示します。
しかし、すべての要素が同じバインドされていない変数 (a ではなく) を共有するようにしたい場合、想定どおりに動作しません。
_G1918、_G1912、および _G1906 が互いにバインドされないのはなぜですか? それはswi-prologのバグですか?