問題タブ [gnu-prolog]

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 に答える
524 参照

prolog - [失敗するまでやり直す]を選択します。なぜですか?

私は次の機能を持っています:

次の方法でトレースをオンにして呼び出します。

上記のトレースでRedoが呼び出された理由がわかりません。select "worked"を使用するべきではないため、次に呼び出される行は

誰かがここでやり直しの外観を説明するのを手伝ってもらえますか?前もって感謝します。

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

prolog - Java の gnu.prolog で (nb_)setarg/3 を使用する

現在、gnu.prolog ( http://www.gnu.org/software/gnuprologjava/ ) を使用して Java からプロローグを使用しようとしています。

CapelliCの多大な助けのおかげで、私の目的に最適なプロローグ プログラムが完成しました。問題は、gnu.prolog が をサポートしておらず、サポートreverse/2していないことnb_setarg/3です。Java はエラーをスローします。

reverse/2自分で実装するのは大きな問題ではありませんが、置き換える方法がわかりませんnb_setarg/3setarg/3これも機能しません)

ここに私のプロローグコードがあります:

JPLfromを使用しようとしましSWI Prologたが、Eclipse がライブラリを正しく見つけることができなかったという重大な例外が指摘されたため、実行できませんでした。私は常に次の例外のいずれかを取得します。

これこのガイドに従った後でも、問題を解決できませんでした。Windows (32 ビット) でも Ubuntu (64 ビット) でもありません。

JPLどうすれば実行できるようになるか、またはどのように使用できるようになるかの解決策はありますnb_setarg/3か? 今まで、結果が出ずに1日半過ごしました。かなりイライラ...

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

prolog - プロローグはリスト内の最小値を見つけるエラー

私は自分のコードを機能させようとしていますが、どういうわけか問題に行き詰まりました。プロローグするのは非常に初心者です。これは私のコードです。

しかし、 findMin() を呼び出すと、このエラーが発生します

キャッチされていない例外: error(type_error(evaluable,'.'/2),(<)/2)

私は本当に立ち往生していて、何をすべきかわかりません。どんな助けでも大歓迎です。

アプリケーションの目的は、shortestPath() を呼び出して最短パスを取得することです。パスは距離 (a、b、距離) にあります。

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

prolog - GNU Prolog のエラー

私はこのコードを持っています:

そして、私はこれらのエラーを受け取ります:

e.pl:1:2: 構文エラー: 。式 e.pl:5:2 の後に or 演算子が必要です: 構文エラー: 。式の後にまたは演算子が必要です

このコードの何が問題なのか教えていただけますか?

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

prolog - GNU と SWI で動作する Prolog コードの作成

これには制限があることは承知していますが、GNU または SWI のいずれかで合理的に機能するように、Prolog コードに条件付きディレクティブを配置する合理的な方法はありますか? sumlist少なくとも、 SWI やGNUなどの組み込み述語sum_listのスペルが一致しない最も単純なケースを考えています。または、SWI にはありますassertが、GNU にはありません。したがって、次のようなものがあればいいでしょう。

または単に:

または、そうではありません。条件付きディレクティブは両方の言語に存在しますが、この種のことを行うために必要な条件を提供するまでには至らないようです。手動検索では見つからなかったものを見逃している可能性があります。

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

prolog - gprolog - あるリストが別のリストの順列であるかどうかを判断する簡単な方法

あるリストが別のリストの順列であるかどうかを判断するプロローグ プログラムを作成しようとしています。入力は の形式で、 listが list の順列であるperm(L,M)場合にのみ true になります。LM

これは私の AI クラスのためのものなのでpermutation、gprolog が既に提供している気の利いた小さな述語をそのまま使用することはできません。私たちの教授は、member述語が役立つかもしれないと指摘しましたが、述語を含む私が持っているアイデアは、非常にトリッキーで、それほど宣言的ではないものを必要とするようです (そして、あまり高度にならずにこれを解決する方法があると思います.クラスはプロローグにとって新しいものです。)

とにかく、確認する方法の 1 つは、LMが同じサイズであること、各L要素が にMあり、各M要素が にあることを確認することですL(! の使用がありmemberます)。[2,2,4]ただし、これはや などの場合には十分ではありません[4,4,2]

別の方法としては、各要素の同じカウントが反対側のリストにあることを確認することもできますが、プロローグに関する私の印象では、あらゆる種類の変数「メモリ」はかなり難しいビジネスです (実際、私が見たサンプル プログラムはソートの実行などは、実際にはまったくデータを操作しているわけではありません。それらは単に「仮説的に」物事を再配置し、イエスかノーかを伝えているだけです...?)

精神的には、リストとチェック要素の両方を並べてソートすることもできますが、それは、他の多くの考え方の中で、オブジェクト指向すぎるように思えます...

ヒントはありますか?私の最大の問題は、(前述のように)「操作」を行うことは、それらについて尋ね、目的の場所に到達するのに十分長く物事が真実であり続けることを望んでいるように見えるという事実のようです.

**更新: gprolog はdelete機能を提供しますが、次のような試みを行うと、予想していた宣言関連の問題が発生します。

perm([LH|LT], R) :- member(LH,R), delete([LH|LT],LH,R), perm(LT,R).

マニュアルでは、delete は次のように定義されています。

実行:

**更新 2: 私はそれを理解したかもしれないと思います! ちょっと冗長ですが、かなりの数のケースでテストしましたが、まだ悪いケースは見つかりませんでした。誰かが大きな問題を見つけたら、指摘してください:

私はカットオペレーターが好きです..

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

prolog - GNU Prolog: クエリの WAM コードを表示していますか?

GNU Prologを使用してクエリの WAM コードを表示することはできますか?

pl2wam を使用してプログラムの WAM を生成できることはわかっていますが、プログラムで実行するクエリはどうでしょうか。これの WAM コードを表示する方法はありますか?

x64 Windows でバージョン 1.4.4 を使用しています