問題タブ [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 - Prolog Fib/2 の述語が常に「ローカル スタック外」と言うのはなぜですか?
Prolog でフィボナッチ数を計算する述語 fib/2 を書きました。動作しますが、常に「ローカルスタック外」と表示され、エラーは次のようになります。
私の述語は以下です:
これがなぜなのか、次のものを得るためにそれを修正する方法は誰でも知っています::
前もって感謝します!
regex - 正規表現マッチング プロローグ
正規表現マッチングを実行しようとしています。すべての関数を書き出しましたが、正常に機能していません。私が知る限り、リストを比較しようとすると問題が発生します。
たとえば、「re_contains(a,a)」です。"re_contains(union(a,b),a)" と同様に (明らかに) true を返します。
しかし、リストにするとすぐに失敗します。「re_contains(seq(a,b), [a,b])」。false を返します。Append は可能なすべての組み合わせを調べて一致を見つける必要がありますが、これらの関数はどれも正しく機能しません。これは、おそらく私が基本的なケースを見逃していると私に思わせます。しかし、私は「re_contains(X, L) :- X == L.」だと思います。世話をする必要があります。ここで何か重要なことを見過ごしているに違いない。
これが私のコードです:
list - プロローグ: 2 つのリストに同じ要素があるかどうかを確認する
私は Prolog を初めて使用し、2 つのリストにまったく同じ要素があるかどうかを確認するのに問題があります。要素が異なる順序である可能性があります。私はこのコードを持っています:
それを除いて動作します
最初の結果を返した後、メモリ不足エラーが発生します。そこで、リストの長さが等しいことを確認し、H1 が L2 のメンバーであることを確認して、結果セットを絞り込もうとしました。
今は両方
すべての結果を返しますが、最後にハングします。これを行うより良い方法はありますか?
prolog - SWIプロローグは終了しません
結果?- is_fakt(X)
の回答のリストを返すのに、いくつかの結果の回答の後にハングするのはなぜですか。PrologがXのすべての可能な値を返すことができない理由がわかりません。
prolog - DCGと左再帰
{a、b、c、d} *の形式の文字列のセットを受け取るdcgを実装しようとしています。問題は、s([a、c、b]、 [])、正しい答えであるtrueを返しますが、s([a、c、f]、[])の形式のクエリがある場合、答えを返さず、ローカルスタックが不足します。
list - Prolog のリスト シフト
次のコードは、最終的に「Out of Local Stack」エラーを伴う無限ループを引き起こします。基本的に、MX と同じになるまで GX の値を減らします。サンプル入力 [[m,g,b],[w,w,w]],パス
これは 2 次元配列であるため、追加により 1 次元に変換され、NextCell の算術演算は行の長さを取り、隣接するセルの座標を見つけて、そのセルの値を返します。セルが「w」または「b」の場合、ゴーストはその方向に移動できません。マップは正方形であると想定できます。
prolog - 可逆的な木の長さの関係
私は「純粋な」プロローグ(いいえis
、カット、または同様のもの。はい、それは宿題です)で可逆的な関係を書き込もうとしていますが、方法がわからないことを認めなければなりません。そのようなものを作るプロセスは見当たらない。
「純粋ではない」が可逆的な算術関係(add、mult、equal、less、...)が与えられ、これらの関係を作成するために使用する必要があります。
今、私は二分木の葉のリストであるtree(List,Tree)
場合に真である関係を作成することによって可逆関数を作成する方法を理解しようとしています。List
Tree
そのようなことを達成するために、私は葉tree_size(Tree,N)
があるときに真である関係を作成しようとしています。これが私の素朴で不可逆的な関係です:Tree
N
クエリは実行できますtree_len(some tree, N)
が、たとえば、は実行できないtree_len(X,3)
ため、元に戻すことはできません。これまでにいくつか試してみましたが、どこで何を探すべきかわからないので、がっかりしていることを認めなければなりません。これを行う方法は実際にありますか?
prolog - 再帰述語でのバックトラック
次の述語があると仮定します(これはPrologでのプログラミングの例です):
クエリの最初の結果はInteger(R)で、マーカーはF0に配置され、R=0を返します。
ユーザーが;を押した場合 、マーカーはF1に配置され、subgoal(isInteger(Y)、F0で満たされます)およびR=1に移動します。
私は上記を理解しています。ここに私の質問があります:
- ユーザーが;を押した場合 繰り返しますが、マーカーはどこにありますか?検索はどのように進んでR=2を返しますか?本の78-79ページの画像を理解しようとしましたが、はっきりしていません。私が見つけたオンラインチュートリアルは、再帰が存在する場合のバックトラックを処理しません。
再帰が存在する場合のバックトラックを説明するチュートリアルを探しています。うまくいけば、理解に役立つスタックコンテンツの画像を使用します。
よろしくお願いしますスザンヌ
prolog - プロローグdcg制限
DCGをジェネレーターとして使用したいと思います。現在のところ、構文は次のとおりです。
s
の長さがであるa
すべてを生成したいと思い< someNumber
ます。
?- phrase(a,X),length(X,Y),Y<4.
iを 使用するa
と、4つ未満のアイテムですべてを取得できます。ただし、すべての組み合わせが使い果たされると、システム(SWI-Prolog 6.2.5)が停止しているように見えます。時々前に、同様の質問がここで尋ねられました。ただし、Prologを初めて使用するため、上記の文法で機能させることはできません。何か案は?
更新:どういうわけか削除された(canrememberthename)によるコメントがありました。とにかく、between(1,4,Y),length(X,Y),phrase(a,X).
制限を設定するために使用することが提案されました。コードを次のように変更した後、これはうまく機能しましたa-->c,a.
prolog - プロローグ - 特定の数の因数を取得しても止まらない?
特定の数値の因数を見つける必要があります。たとえば、次のようになります。
コード :
しかし、実行するdivisors2(40,RR).
と無限ループになり、画面には何も表示されません。
なんで ?
よろしく