問題タブ [logical-purity]
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 - プロローグ: インスタンス化されていない値を持つリストのメンバーを削除します
thisと同様に、リスト上の要素のすべての出現を削除したいのですが、私の場合、リストにはインスタンス化されていない変数が含まれている可能性があります。例えば:
と
delMember を次のように定義してみました。
この定義では、私が得た最後の結果は正しいですが、その前に変数をインスタンス化しようとしています。
何か案は???
list - is_list/1 と自由変数
ここに最初の観察があります:
ここに別の観察があります:
したがって、なぜそのis_list/1
ように実装されるのでしょうか
また
_
リストと明確に統合できるのはいつですか? そのほうが論理的に健全ではないtrue
でしょうか。
の SWI-Prolog のドキュメントでis_list/1
は、メモに次 のように記載されています。
5.0.1 より前のバージョンでは、 orを
is_list/1
チェックしただけで、現在の の役割がありました。現在の定義は事実上の標準に準拠しています。[]
[_|_]
proper_list/1
is_list/1
なぜそれが事実上の標準なのですか?
prolog - (整数) 数を 2 つの整数平方の合計として取得するプロローグ プログラムが機能しないのはなぜですか?
私は Prolog の学習を始めています。指定された整数が整数などに与えるプログラムがP
必要です。この式を満たすとの値がない場合は、が返されます。A
B
P = A² + B²
A
B
false
例: の場合、 and (またはand )P = 5
を与える必要があります。A = 1
B = 2
A = 2
B = 1
1² + 2² = 5
私はこれがうまくいくはずだと思っていました:
クエリで:
ただし、そうではありません。私は何をすべきか?私は Prolog に非常に慣れていないので、まだ多くの間違いを犯しています。
前もって感謝します!
list - `var(A)` と実行順序
このページhttp://www.ic.unicamp.br/~meidanis/courses/mc336/2009s2/prolog/problemas/の演習 09 では、繰り返される要素をサブリストにパックする述語を作成するよう求められます。
簡単な解決策は簡単です
ここで、分割はsplit(Head, Tail, HeadGroup, Rest)
次のように定義されます
これは問題なく動作し、上記の Web ページで提供されているサンプル ソリューションとほぼ一致しています。
このソリューションが失敗するのは、のようなクエリですpack(X, [[a], [b, b]]).
。2 つの解セット間の対応は全単射 (すべてA
のpack(A, B)
には 1 つしかないB
ため) であるため、より良い解が存在するはずです。
それを解決する1つの方法は、評価の順序を変更することです。これにより、プロローグが次のような引数のタイプに応じて非無限分岐を選択できるようになります
これに関して2つの質問。
まず、これは信じられないほど醜いので、引数の型に応じてルールの順序を選択するより良い方法はありますか?
第二に、おそらくもっと複雑な質問ですが、 を使わずvar(A)
にソリューションを書き直す方法はありますか? そうでない場合、その理由は?
prolog - コンピュータ関数が「単調」と見なされるために満たさなければならない要件は何ですか?
「単調」であると見なされるために、コンピューターの関数/手順/述語が満たさなければならない要件は何ですか?
ウィキペディアの記事「単調関数」など、いくつかの文献を確認しました。私が最も興味を持っているのは、コンピュータ プログラミングに実際に関わるときに適用できる実用的な一連の基準です。関数が「単調」になる可能性が高くなるように、関数を作成および設計する際に従うべきヒントとベスト プラクティスは何ですか?