問題タブ [dcg]
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 - プロローグ リスト エラー: グローバル スタックが不足しています
リストでとが隣り合っているかのように、 prologadjacent(X,Y,Zs)
にルールを書き込もうとして
います。true
X
Y
Zs
私は現在持っています:
テスト:
何かアイデアはありますか?前もって感謝します。
prolog - PROLOG で DCG を通常の限定節にどのように変換しますか?
次の DCG を PROLOG の通常の限定節にどのように翻訳しますか?
編集: DCG を通常の PROLOG 句に変換したいのは、同じコードで DCG と通常の句の両方を使用できないためです (私の場合)。私はこの2つのコードを持っています:
ピース1:
使用方法の例は次のとおりです。
そしてPiece2:
使用方法の例は次のとおりです。
両方のコードを 1 つに結合して、traducir が適切に記述されているかどうか (DCG に従っている場合) をテストし、入力した内容をテキストに変換したいので、最終的なプログラムは次のことを実行できるはずです。
prolog - prolog リストの検索
リストを比較しようとしています。与えられた function(List1,List2) で、List1 の長さは N、List 2 の長さは M で、N>M です。
List2 の順列がたまたま List1 の最初の M 文字であるかどうかを確認したいと思います。
例えば、
真であるべきであり、
false にする必要があります。
ありがとうございました。
unit-testing - 拡張 DCG テスト ケース
拡張 DCG テスト ケースを探しています。脱糖機能ではなく、結果として変換されたルールの動作に関して、DCG プロセッサの正しい機能をチェックするテスト ケースを意味します。
かつてネット上でそのようなテストケースをいくつか見たことがあると思います。しかし、私はそれらを見失いました。現在、次のテストケースのみが見つかりました。
http://www.sju.edu/~jhodgson/wg17/Drafts/DCGs/test_cases
(ここも同じ: http://www.sju.edu/~jhodgson/wg17/dcgs.pdf )
しかし、それらは表面的かつ意図的なものにすぎません。つまり、変換である脱糖が成功するか、エラーが発生するかをテストします。変換結果がどうあるべきかさえ示していませんが、とにかく拡張 DCG テストケースを探しているので気にしません。
どんなポインタも歓迎します。
さよなら
追伸: これは変換を示していますが、それでも外向的ではなく内在的です:
http://www.sju.edu/~jhodgson/wg17/GRIND.TXT
そして、例えば:
しかし、多くの Prolog システムでは、DCG の終端、否定などに異なるアプローチが使用されています。したがって、拡張テスト スイートの方が便利です。
prolog - Prologのポーカーハンド
私は一般的なポーカーハンドを分析するための述語を書こうとしています。たとえば、「カード」のリストが与えられた場合、プレーヤーが4種類あるかどうかを識別します。3種類の; ペアなど:私の考えは、同様のランクをチェックし、そうでない場合は削除することでした:
これはfourofakind(["A"、 "J"、10、 "Q"、 "A"、 "A"、 "A"])で機能します
ただし、すべてのシナリオではありません。ここでのロジックに関するガイダンスはありますか?
ありがとう
prolog - Prolog-パリンドロームファンクター
私はpalindrome/1
、そのリスト入力が回文リストで構成されている場合にのみ真である述語をPrologに書き込もうとしています。
例えば:
本当です。
アイデアや解決策はありますか?
list - Prolog-リストをN個に分割
リストをN個の部分に分割する述語を書き込もうとしています。これは私がこれまでに持っているものです。
アイデアは、N個になるまで、リストの一部を他の2つの部分に分割し続けることです。私はこのアプローチで平凡な結果を出しました:
だから私は欲しいものを手に入れましたが、私はそれを2回手に入れました、そして他のいくつかのものが添付されています。3つの部分に分割すると、事態はさらに悪化します。
別のアイデアはプレフィックスを使用することですが、それが実際にどのように機能するかはわかりません。これを使用するには、短すぎず長すぎないプレフィックスを取得する必要があることをPrologに通知できるはずです。したがって、長すぎるプレフィックスは取得しないため、次の再帰ステップに何も残されません。
誰かが私を正しい方向に向けることができますか?
少し明確にする:述語は、リストをN個の部分に分割するすべての可能性を返す必要があります(空のリストは含まれません)。
prolog - 表のプロローグ スポット
2 次元リスト x を表す特定のリストがあります。以下の例でわかるように、このテーブルには 1 の 2 つの「スポット」が含まれています。
以下の例のように、2 番目のスポットのみを 1 から 2 に変更する必要があります。
separate(L,M)
最初のリスト L を取り、2 番目のテーブル M を生成するという述語が必要です
「findall」などの標準的な述語を使用せずにこれを解決できれば素晴らしいでしょう...
prolog - 水のパズルの3つの水差しを解決するための私のプロローグプログラムの何が問題になっていますか?
このコードで「go」を使用しても真の答えが得られない理由を誰かが見つけることができますか?たとえば、私が書いgo(7,3,l)
たところ、3リットルの水を2番目の水差しに移動する必要があると思いますが、プロローグによれば、それは誤りです。どうしたの?
shell - プロローグはユーザーから文字列入力を取得し、誤った入力の場合にプログラムの終了を回避します
プロローグで簡単なシェルを書こうとしています。現在、read/1 を使用してユーザーに入力を問い合わせています。
ただし、解決したい問題が2つあります。
1) ユーザーは用語のみを入力できます。
クエリでは、ユーザーが用語を入力する必要があり、入力がピリオドで終わる必要があります。これは、ユーザーが「変数を値に設定」などのコマンドを入力できるようにするための制限です (この文字列を解析します)。プロローグでそのような文字列を読み取る方法はありますか? (可能であれば、リストの表現、引用符、または終了ピリオドなどのオーバーヘッドなしで?)
2) ユーザーが何か間違ったもの (スペースなど) を入力すると、構文エラーが発生してシェルが終了します。これらのエラーを処理し、プログラムの終了を回避するための迅速かつ適切な方法は何ですか?
すべてのヘルプは大歓迎です!