問題タブ [prolog-assert]

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

prolog - 再帰を使用しない階乗計算

プロローグの遡及のみを使用して、再帰を使用せずに階乗計算 (n!) のソリューションを実装しようとしています。例えば:

固定事実factorialを使用して、たとえば、2 の階乗を発見するために述語retroactionを呼び出すと、正しい答えが得られます。

私が実装しようとしている解決策は次のとおりです。

1 より大きい数値の階乗を取得しようとすると、機能しません。誰かが理由を知っていますか?

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

prolog - Prolog を使用した入力の読み取り

これが明らかである場合は申し訳ありませんが、私は最近プロローグを学習しており、レコメンダー システムで使用するデータを読み込もうとしています。

前のコード、ユーザーが使いたい金額を読み取ってから、贈与者の性格について尋ねる必要がありますが、最初の質問だけが尋ねられます。新しい行に到達したようですが、述語をアサートしていないようです:

?- will_spend(30)。[警告: 未定義の述語: will_spend/1']

これはなぜですか、私は何を間違っていますか?助けてくれてありがとう。

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

prolog - データベースで事実を更新/追加する最良の方法は?

次のような事実があるとします。

私はこのようなものが欲しい(疑似コード):


私は2つの異なる方法を試しました。最初はあまり好きではない :

2番目は機能しません:

whenFactが成功しない場合はAmtインスタンス化されないため、常に取得しNewAmt is Valます。

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

dynamic - PROLOGは機能していません

述語のリストから項目を削除する必要がありますが、機能していません。私にはtrueが返されますが、アイテムはまだそこにあります。

コード:

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

prolog - エキスパート システムでのプロローグと「逆」出力

私はプロローグが初めてです。次のような単純なエキスパートシステムの実行方法を理解することができました

そして、これは良いことですが、問題は、「バック」出力を行う方法です。たとえば、プロローグ ウィンドウに「タンク」と入力すると、このタンクを構成するすべてのパーツが表示されます。銃、はい、短いライフルなどです。はい、翼 - いいえなど

このようなエキスパート システムで実行することは可能ですか、それとも別のプログラムを実行する必要がありますか?

お返事ありがとうございます

0 投票する
2 に答える
306 参照

prolog - Prolog: 一重引用符と二重引用符の異なる動作

私はPrologを初めて使用し、理解できないことに遭遇しました。

これは私のコードです:

データベース内のユーザー情報を更新するには、 changeAge/2次の 3 つの手順を実行します。

  1. を使用して、正しいレコードを検索しuser/3ます。
  2. を使用して、データベースから一致するレコードを 1 つ削除しますretract/1
  3. を使用して、更新された新しいレコードをデータベースに挿入しますassert/1

これは私のコンソール出力です:

二重引用符が私に与えられるのに (行 4) 一重引用符が私に与えるのはなぜですかtrue(行 2 false)?

0 投票する
3 に答える
3194 参照

prolog - abolish/1 とrettractall/1 の違いは何ですか?

説明書を読んでも、両者の違いがわかりません。

マニュアルには次のように書かれています。

動的述語のすべての句を消去するには、retractall/1 を使用することをお勧めします。

そこでretractall/1、プログラムで使用することにしました。しかし、私は違いが何であるか疑問に思います。

0 投票する
4 に答える
1137 参照

list - How to use dynamic databases in Prolog?

I have written the following program, which calculates the longest non-decreasing sub-sequence of input array.

The sub-program to find the longest list from the list of lists is taken from stackoverflow (How do I find the longest list in a list of lists) itself.

I have used the Prolog dynamic database for memoization purpose. Though the program with database runs slower than the program without database. Below are the comparative times between two runs.

I would like to know if I am using the dynamic database correctly. Thanks!

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

prolog - プロローグ: assert を含むルールは、最初の結果のみをファクトに追加します

私はいくつかのものを事前計算し、結果をプログラムの最初に事実として保存しようとしています:(簡略化されたコード)

しかし、SICStus Prolog でファイルを参照すると、最初の結果 cost(1,20) のみがアサートされます。

しかし、SICStus プロローグ コンソールで assert_all の右側を直接入力すると、両方のコスト/2 ファクトが存在します。

この動作は非常に紛らわしいと思います。何が起こっているのでしょうか?