問題タブ [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.
prolog - dif/2 を使用して生成されたシーケンスの重複を防ぐ方法は?
この質問は、重複する要素の有限セットから形成されたすべてのシーケンスを生成する (ビットを一般化する)に関する StackOverflow に関する別の質問に答えているときに出てきました。
ボリスがコメントで正しく示したように、この問題には多くの既存の解決策があります。ただし、アキュムレータ (つまり、新しく選択された要素と比較される既に選択された要素のリスト) を使用せず、dif/2
代わりにステートメントを使用するソリューションに興味があります。
説明のために、次のプログラムには 4 つの要素があり、4 回の再帰呼び出しの後、div/2
これまでに選択された 4 つの要素がペアごとに異なることを示すいくつかのステートメントがあります。このことから、再帰を続けて 5 番目の要素を探すのは無意味であると推測できます。これは、div/2
ステートメントに与えられた要素が残っていないためです。この「知識」をプログラムにエンコードして、ループしないようにする方法はありますか?
現在のループ動作:
prolog - プロローグ: ゴール p(t) の評価が終了する項 t と終了しない項は?
次のロジック プログラムを考えてみましょう。
目標 p(t) の評価が終了する項 t と終了しない項は?
loops - 結果後のプロローグ ループ
したがって、リストのすべての可能なサブセット + 順列を見つけるために、この述語を書きました。正しい出力が得られますが、何らかの理由で、すべての (正しい) 結果が得られた後もプログラムがループし続けます。
私は何を間違っていますか?
allSubsets([1,2,3], X) に対して得られる結果は次のとおりです。
最後の 2 行でループを中止する必要があります。
前もって感謝します。
prolog - プロローグで無限ループに陥る
プログラムに整数 1,2,...,N のサイズ K のすべてのサブセットを見つけてもらいたいです。
このために、次の subs(N,X,Y) は、X がセット Y のサイズ N のサブセットであることを意味します。次のように定義しました。
そして、チェックとして subs(2,X,[1,2,3,4]) を実行しました。
最初の回答 [1,2] を取得しましたが、無限ループに陥ったため、2 番目の回答は得られませんでした。私はそれを追跡しようとしましたが、最初の答えを見つけた後、そうするようです:
だから私は私が立ち往生していることがわかりますsubs(0, _G619, [4])
。誰かがこの問題を克服する方法を知っていますか?
ありがとう
prolog - int の範囲を生成 -- 「ローカル スタックから」[初心者向け]
gen(N,R)
:
R
0 から N-1 までの値です。
N
非ゼロの正の整数。N
常に与えられます。
例: ?- genN(2,R)
. このように実装しましたがR=0;R=1.
、「out of local static error」があります:
結果:
algorithm - Prolog: Luhn アルゴリズムを効率的に実装する
SWI-Prolog に Luhn アルゴリズムを適用してみました。しかし、実行中に問題が発生します。123 のような単純な数値でテストすると、すぐに結果が得られます。5379173895860200 のような長い番号でテストすると、非常に長い時間がかかるため、この実行を中止するしかありません。問題を見つけるには助けが必要です。コード:
prolog - SWI-Prolog : "false" どこ?
通常、目標が失敗すると、「false」が返されます。つまり、目標が満たされていません。SWI-Prolog が失敗したサブゴールの述語、行、および/またはシーケンス番号を出力するようにする方法はありますか。プログラム全体をトレースするのではなく、他のプログラミング言語のようなフィードバックが必要なだけです。を返すのがエラーではないことはわかっていますfalse
が、デバッグ時に問題を特定するためにこのフィードバックがあると便利です。もちろん出来ればですが。
ありがとう