問題タブ [prolog-cut]
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 における Cut 演算子の可換性
私は現在 Prolog を勉強しています。私が読んでいるメモの 1 つで、カット演算子を正しく使用する方法の例が示されています。リストから特定の値のすべての要素を削除するには、次の関数を検討してください。
バックトラッキングのため、これは関数の正しい定義ではありません。関数は、特定の値のいくつかの要素を削除して取得したリストのすべてのサブリストを返しますが、必ずしもすべてではありません。私が読んでいるメモによると、これを修正する正しい方法は、2行目を次の行に置き換えることです
しかし、その行を
は正しくありません。2 番目の例が関数を修正するための間違った方法である理由がわかりません。swipl では、これらの修正で第 2 項を置き換えると、私が検討するテスト ケースで常に同じ答えが返されるようです。ここで何が欠けていますか?
prolog - Prolog プログラミングで Cut と Not を使用する
私はPrologプログラミングが初めてです。だから私は次のことを知りたいです。Prolog でのカット (!) の使用を知っています。プロローグでの Not の使用、いつ、どのように Not を使用するか、Cut を使用せずにバックトラッキングを回避せずに以下を書き換える方法を誰かが説明してくれませんか。(述語のみを使用)
そして、次の書き直し方を教えてください(述語のみを使用)