問題タブ [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.

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

prolog - dif/2 を使用して生成されたシーケンスの重複を防ぐ方法は?

この質問は、重複する要素の有限セットから形成されたすべてのシーケンスを生成する (ビットを一般化する)に関する StackOverflow に関する別の質問に答えているときに出てきました。

ボリスがコメントで正しく示したように、この問題には多くの既存の解決策があります。ただし、アキュムレータ (つまり、新しく選択された要素と比較される既に選択された要素のリスト) を使用せず、dif/2代わりにステートメントを使用するソリューションに興味があります。

説明のために、次のプログラムには 4 つの要素があり、4 回の再帰呼び出しの後、div/2これまでに選択された 4 つの要素がペアごとに異なることを示すいくつかのステートメントがあります。このことから、再帰を続けて 5 番目の要素を探すのは無意味であると推測できます。これは、div/2ステートメントに与えられた要素が残っていないためです。この「知識」をプログラムにエンコードして、ループしないようにする方法はありますか?

現在のループ動作:

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

prolog - プロローグ: ゴール p(t) の評価が終了する項 t と終了しない項は?

次のロジック プログラムを考えてみましょう。

目標 p(t) の評価が終了する項 t と終了しない項は?

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

loops - 結果後のプロローグ ループ

したがって、リストのすべての可能なサブセット + 順列を見つけるために、この述語を書きました。正しい出力が得られますが、何らかの理由で、すべての (正しい) 結果が得られた後もプログラムがループし続けます。

私は何を間違っていますか?

allSubsets([1,2,3], X) に対して得られる結果は次のとおりです。

最後の 2 行でループを中止する必要があります。

前もって感謝します。

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

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])。誰かがこの問題を克服する方法を知っていますか?

ありがとう

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

prolog - int の範囲を生成 -- 「ローカル スタックから」[初心者向け]

gen(N,R):

R0 から N-1 までの値です。 N非ゼロの正の整数。N常に与えられます。

例: ?- genN(2,R). このように実装しましたがR=0;R=1.、「out of local static error」があります:

結果:

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

algorithm - Prolog: Luhn アルゴリズムを効率的に実装する

SWI-Prolog に Luhn アルゴリズムを適用してみました。しかし、実行中に問題が発生します。123 のような単純な数値でテストすると、すぐに結果が得られます。5379173895860200 のような長い番号でテストすると、非常に長い時間がかかるため、この実行を中止するしかありません。問題を見つけるには助けが必要です。コード:

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

prolog - SWI-Prolog : "false" どこ?

通常、目標が失敗すると、「false」が返されます。つまり、目標が満たされていません。SWI-Prolog が失敗したサブゴールの述語、行、および/またはシーケンス番号を出力するようにする方法はありますか。プログラム全体をトレースするのではなく、他のプログラミング言語のようなフィードバックが必要なだけです。を返すのがエラーではないことはわかっていますfalseが、デバッグ時に問題を特定するためにこのフィードバックがあると便利です。もちろん出来ればですが。

ありがとう