問題タブ [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.
prolog - Prologでの定式化
私は現在、Prologで解決したい次の問題を抱えています。これは簡単な例であり、Java /C/その他で簡単に解決できます。私の問題は、Javaの考え方に縛られすぎて、Prologの論理力を利用する方法で実際に問題を定式化できないと信じていることです。
問題は..
左または右を指す6つの矢印のセットがあります。それらが次の開始構成にあると仮定しましょう。
これで、2つの矢印が隣り合っている限り、それらを切り替えることができます。私の目標は、どの一連のアクションによって矢印の初期構成が次のようになるかを発見することです。
問題を定式化する私の最初の試みは..
これは、矢印の初期構成が何であるかをPrologに伝えます。しかし、どうすれば追加のロジックを挿入できますか?たとえば、どのように実装しswitchArrows(Index)
ますか?Prologでこのような初期条件を述べるのは正しいですか?後で、たとえばarrow_a
位置6に設定しようとすると、干渉しませんatPosition(6, arrow_a)
か?
prolog - Prolog の述語からリストを「返す」
私は現在このアルゴリズムを持っており、正常に動作します。私はこのように実行しています:
Path
の値は
これは起こるべきことではありません。パスには、アルゴリズムが通過した一連の「状態」が含まれている必要があります。何が問題なのですか?
prolog - Prolog - 命題論理の式
特定の入力が数式を表しているかどうかを検証するために、述語を作成しようとしています。
p、q、r、s、t などの命題アトムにのみ使用することが許可されています。テストする式は次のとおりです。
wff
与えられた構造が式の場合に true を返し、それ以外の場合に false を返す述語を作成しました。また、数式内で変数を使用する必要はありません。以下で説明するように、命題アトムのみを使用します。
このようなテストを導入する
wff(and(q, imp(or(p, q), neg(p)))).
と、呼び出しは と の両方の値を返しtrue
ますfalse
。なぜこのようなことが起こるのか教えてください。
prolog - swi-prolog で文を分割する方法
Win XPでSWI-Prologを試しています。Prolog の文を別々のアトムに分割する方法を理解しようとしています。
例: 次のような文があるとします。
「これは文字列です」
個々の単語を変数に格納する方法はありますか?
お気に入り :
X = この
Y = は
....
などです。
誰でもこれがどのように機能するか説明できますか?
ありがとう。
prolog - プロローグのDCGイラストお願いします
現在、Prolog で DCG を使用して XML ファイルを解析しています。次のような単純な XML を解析できる次のコード スニペットを取得できました。
DCG は次のように定義されます。
この場合、DCGがどのように機能するかを誰かが説明してくれますか? DCG の引数を理解するのに本当に苦労しています (例: [E] in xml([E]); [E|L] in xml([E|L]). ) ありがとうございます!
prolog - どの DCG ルールを追加する必要がありますか?
さて、私はプロローグを使用して単純な xml パーサーを構築しています。そして、次のxmlファイルがあります。
Prolog では、次の DCG ルールを使用します。
そのため、ルールは「p1:1 in main:1」、「x:int」、「main:1」などを処理できません。私は実際にそれらを「p1」、「x」、「main」に変更しようとしましたが、パーサーは完全に正常に動作します。パーサーが不規則なトークンを処理できるようにするには、どのようなルールを追加すればよいでしょうか?
解析ツリーは次のようになります。
以下は私が得るものです:
prolog - プロローグで角括弧を書く方法は?
これは奇妙に聞こえるかもしれませんが、パーサーで使用されているので、フォームの何かを解析できるようにしたいと思います
foo [bar]
したがって、これはリストで次のように表されます。
[foo、[、bar、[]たぶんそのような単語はDCGで次のように書かれるでしょう:
問題は、角括弧が予約文字であるということです。それで、これをプロローグでどのように表すことができますか?
prolog - Prolog 構造の検索
多くの接続詞 (より大きな問題の一部) から構成される数式に興味があります。次のようなプログラムを書きたいと思います。
:- get_params(conj(conj(a,b),c),X)
そして、接続詞のすべてのパラメータのリストを返しますX=[a,b,c]
。現時点でできること
:- get_params(conj(a,b),X)
取得するためX=[a,b]
単純な Prolog パターン マッチングを使用しますが、次のようなことを行うにはどうすればよいでしょうか。
:- get_params(conj(conj(a,b),c),X)
取得するためX=[a,b,c]
それは本当に簡単に思えますが、私は一日中苦労してきました!
list - gnu Prolog パワーセットの変更
だから私はパワーセットのためにこれを手に入れました:
これにより、リストのすべてのセットが生成されます。すべてのセットをリスト順に生成することは可能ですか?
例:
私は手に入れたい
[a,c]
これらのサブセットは左から始まり、右に進むサブセットであるため、このサブセットのリストには no がないことに注意してください。
追加と再帰の組み合わせを使用してみましたが、思ったようにうまくいきませんでした。この時点で少し困惑。
ありがとう。
parsing - PrologのDCG—文字列
私はPrologの組み込みDCG機能を使用してLispからCへのトランスレータを書いています。これが私が算術を扱う方法です:
現在のように、ネストされた式は処理されません。これが私がうまくいくと思ったものです:
しかし、私はこれを取得しています:
どうすればそれを機能させることができますか?