問題タブ [failure-slice]
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.
list - 任意の順序で 2 つのリストの等価性を検出するプロローグ プログラム
要素の順序が問題にならない2 つのリストの等価性を検出する Prolog プログラムを書きたかったのです。だから私は次のように書いた:
しかし、 のような入力を与えるとequal([1,2,3],X).
、 のすべての可能な値が表示されるわけではありませんX
。代わりに、プログラムが途中でハングします。その理由は何ですか?
prolog - このコマンドがプロローグでスタックオーバーフローを引き起こすのはなぜですか?
私は次のプロローグコードのスニペットを持っています:
次のコマンドがスタックオーバーフローを引き起こす理由を誰かが説明できますか?前もって感謝します。
prolog - プロローグ-無限のルール
次のルールがあります
クエリは次のとおりackermann (M,N,s(s(0)))
です。
さて、私が理解したように、3番目の計算では、無限の検索(失敗ブランチ)が得られました。確認したところ、有限検索(失敗分岐)が出ました。
説明します:最初に、M = 0、N = s(0)の置換を取得しました(ルール1-成功!)。2番目では、M = s(0)、N = 0の置換を取得しました(ルール2-成功!)。しかし、今は何ですか?M = s(s(0))N = 0に一致させようとしましたが、有限検索-失敗ブランチが得られました。コンパイラが私に「失敗」と書かないのはなぜですか。
ありがとうございました。
prolog - Prolog の Out Of Global Stack エラー
Prolog で次のプログラムを実行しようとしています。
プログラムは、li と hi の間のすべての数値から lo と ho の間の結果に至る、加算と乗算の適切なパスを計算する必要があります。加算は文字 A に対応し、乗算は M に対応します。プログラムの最後に、見つけたパスに対応する As と Ms の文字列を取得することになっています。
プログラムはうまく動作しますが、テストケースを試すと:
「ERROR: out of global stack」というメッセージが表示されます。
コードの何が問題なのですか?
prolog - プロローグ: 1 レベルの再帰のように見えるグローバル スタックからのエラー
私はプロローグでかなり錆びていますが、なぜこのようなことが失敗するのかわかりません:
したがって、frack(4) を評価するとします。上記の事実が定義された対話型プロンプトから、4-1 = 3 であるため、無限に再帰する必要はないと思います。しかし、SWI-Prolog で次のエラーが発生します。
prolog - Prolog述語-無限ループ
自然数を使用して、2の累乗のProlog述語を作成する必要があります。自然数は次のとおりです:0、s(0)、s(s(0))ansなど。
例えば:
これは私のコードです:
そして、それは最初の例で完全に機能しますが、2番目の例では無限ループに入ります。
これを修正するにはどうすればよいですか?
prolog - Prologの後継表記は、不完全な結果と無限ループを生成します
私はPrologを学び始め、最初に後継表記について学びました。
そして、これは私がプロローグでペアノの公理を書くことについて知るところです。
PDFの12ページを参照してください。
掛け算のルールをPrologに入れました。次に、クエリを実行します。
つまり、基本的に6の因数を見つけることを意味します。
結果は次のとおりです。
この結果には2つの問題があります。
- すべての結果が表示されているわけではありません。結果X=6、Y=1が欠落していることに注意してください。
- Ctrl + Cを押してから中止を選択しない限り、停止しません。
だから...私の質問は:
- 何故ですか?「prod」と「sum」を入れ替えてみました。結果のコードは私にすべての結果を与えます。そして繰り返しますが、それはなぜですか?それでもデッドループです。
- それを解決する方法は?
私は無限ループに関する他の答えを読みました。しかし、私は誰かがこのシナリオに基づいて答えてくれることを感謝します。それは私を大いに助けます。
prolog - この単純な例で Prolog がクラッシュするのはなぜですか?
こんにちは、上記は非常に単純なプロローグ ファイルで、いくつかの事実と 1 つのルールのみが含まれています。しかし、このファイルをロードした後、Prolog に次のクエリを依頼します。
プログラムがクラッシュします。その理由はlikes(john,john)
、ルールにX\=john
.
何かアドバイス?
prolog - プロローグ:ピタゴラストリプル
ピタゴラストリプルのXとYで終了することになっている上限変数Nを使用するこのコードがあります。ただし、上限に達したときにのみフリーズします。カットを使用してバックトラックを停止する方法がわかりませんでした。コードは次のとおりです。
たとえば、と呼ばれます
prolog - 文を変換すると無限ループが発生しますが、その方法は?
これがどこで間違っているのかわかりません。私は Prolog に非常に慣れていないことに注意してください。何かが欠けていると確信しています。それが何であるかはわかりません。誰か助けてくれませんか?
ありがとう、これが私のコードです: