問題タブ [prolog-toplevel]

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 投票する
2 に答える
77 参照

prolog - プロローグの文を分割して検索する

次のように作成されたリスト L があります。

ここで、メンバー関数を使用して L 内のアトムを検索します。私は試した :

ここで私が間違っているのは何ですか?

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

prolog - データベースへのクエリの成功と失敗

だから私は取り組んできたエクササイズに行き詰まっています。私は次の事実を持っています:

これが意味することは、appleseed1 が appleseed0 から来た、apple1 が appleseed0 から来たなどということです。私が抱えている問題は、値が入れ替わった場合に false を出力する必要があることです。つまり、クエリの結果が「true」の場合は「true」になり、クエリseed(appleseed0, apple1)が逆の順序の場合は「false」になりますseed(apple1, appleseed0).

現在、私の述語は次のようになっています。

これが、順序に関係なくクエリが true を返す理由であることを理解していますが、他の唯一のアイデアは次のとおりです。

しかし、そのように書くと、false のない無限ループになってしまうため、そのように書くことはできません。seed(appleseed2, apple2)のようなもので表示されたときにクエリが「true」になり、のようなもので表示されたときに「false」になるようにするにはどうすればよいseed(apple2, appleseed2)ですか?

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

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

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

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

私はすでに試しました:

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

私も試しました:

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

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

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

prolog - Prolog は true または false を「返さない」

少し問題が発生しました。必要な値を「返す」Prologクエリを取得しましたが、2番目の値としてtrueまたはfalseを返したいです。私の他のクエリはすべて正常に機能しますが、これは機能しません。

それは私が得るものです:

それだけが必要:

あなたが私を助けてくれることを願っています。ありがとう!

編集:

プロローグ コード: ナレッジ ベース内のすべての機能構造レコード (プロローグ [属性:値、属性:値、...] でリストとして表される) を検索し、OldEvent または OldEvent よりも大きい最小のレコードを「返します」それより小さい値がない場合。

OldEvent がない場合 (OldEvent の値は「unknown」)、最新のフィーチャ構造レコードを取得します。

どちらにも満足できません。通常の文字列かリストかOldEvent = "unknown"を確認するにはどうすればよいですか?OldEvent

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

prolog - 一部のプロローグ述語は自動的に「終了」するのに、Enter キーを押す必要があるのはなぜですか。また?

私は SWI-Prolog を使用しており、私が書いたいくつかの述語を実行しようとすると、答えの最後に自動的にピリオドが置かれ、次の行にまっすぐ進みます。Enterキーを押すか、自分でフルストップを置く必要がある人もいます。どうしてこれなの?

これは、Enter キーを押すか「.」を「手動で」押す必要がある例です。最後に、';' を押しても false を返します。しかし、なぜ false を返すのかわかりません。