問題タブ [prolog-toplevel]
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 - クエリに対するさらなる解決策を取得する
私は持っている
しかし、クエリを実行すると
私は得るだけ
X = tom という別の行も出すべきではありませんか?
io - SWI-Prolog で copy_stream_data を呼び出すときに、'|:' プロンプトを回避するにはどうすればよいですか?
cat
を使用して SWI-Prolog にプログラムを実装しましたcopy_stream_data
。
ファイルargs.pl
:
ファイルcat.pl
:
cat
からstdin
へのプログラムを使用すると、 からの入力が必要な場所にstdout
プロンプトが出力されます。どうすればそのプロンプトを回避できますか?|:
stdin
file-io - 標準出力ストリームのリダイレクト
listing/0
SWI-Prolog REPLの出力をファイルに書き込むにはどうすればよいですか?
swi-prolog - SWI-Prolog 回答全体 (リスト) を表示する方法は?
次のように、文字列を ascii コードのリストに変換しようとしています。
ご覧のとおり、これでリスト全体が得られるわけではありませんが、必要です。
この解決策は機能しません。答えが得られて完全に停止するため、wを押すことはできません。これもそうではありません。関数を問題なく呼び出すことができ、true が返されますが、リストはまだ完全に表示されていません。
どんな助けでも大歓迎です!
prolog - Prolog バックトラッキング ポリシー
SWI-Prolog、バージョン 6.6.6。
次の事実を考慮してください。
その結果、次の答えが得られます。
しかし、データを少し変更すると:
少し違う答えが返ってくる…
質問の述語の最初のパラメーターが他の節と統一されていないため、2 番目のケースのバックトラックは発生しないようです。
それにもかかわらず、各ケースの答えが得られることが期待されますtrue ; false.
。エンジンは最初の述語句を試行し (結果はtrue
)、次にバックトラックして同じ述語の他の句を探します (結果はfalse
)。2番目のケースでは一種のショートカットですか?
これは (ある程度) 標準的な動作ですか?つまり、プロローグ ルールを記述するときに考慮する必要がありますか?それとも純粋に実装固有ですか?
prolog - SWI-Prolog が最初の答えしか返さないのはなぜですか?
私はプロローグが初めてです。私は学ぶために簡単な例を試しています。次の行を含むこの.pl
ファイルがあります。
コンサルティングとテストの後、最初の回答のみが表示されます。例えば:
関係を満たすすべての組み合わせを与えることになっていませんparent
か?
誰が問題が何であるか知っていますか?
prolog - この 3 つのルールを結び付けるのに苦労しています
次の 3 つのルールを一緒に接続する際に問題が発生しています。
countcombo は追加リストを作成します。membersofcombo は、そのリストを並べ替えてから、元の追加リストの各メンバーを生成します。count ルールは、各メンバーの出現回数をカウントします。
membersofcombo と count は連携して動作しますが、countingcombo をコンボのメンバーに接続することはできません。
prolog - プロローグ。クエリで、結果に含めたくない変数に条件を付けるにはどうすればよいですか?
それぞれの人に名前と年齢を与える次の知識ベースがあると想像してください。
ここで、20 歳以上のすべての人を取得したいと考えています。さらに、年齢ではなく名前を収集したいだけです。mary
ここでは、 と を取得したいと思いますjohn
。
これを一般的に Prolog で、より具体的には SWI-Prolog で行う方法は?
次のように、匿名ではない変数を使用する場合:
X
Prolog は、とY
と I do not wantの両方の値を教えてくれますY
。
_
Prolog は 2 つのインスタンス化をリンクできないため、無名変数を使用できません。以下はエラーになります。
それで、これを行う方法は?
math - 数学のプロローグ - プロローグでノードのレベルを検索する
ここに二分探索木があると仮定し、 above(X,Y)
-X
が のすぐ上にあるという規則が与えられY
ます。また、ルールを作成しましたroot(X)
-X
親がありません。
次に、このツリーのノードの深さを把握しようとしていました。ツリーのルートノードが「r」であると仮定すると、事実が得られましたlevel(r,0)
。ルールを実装するためにlevel(N,D) :-
、私が考えていたのは、ここに再帰が必要だということです。したがって、私は試しました
したがって、N
がルートでない場合は、ノードが1 つX
上N
のレベルD
にあり、再帰があります。しかし、これをテストしたところ、ルート条件でのみ機能します。ノード "s" がノード "r" の leftchild であるなど、さらにファクトを作成したとき、私のクエリは level(s,D) です。それは私に「いいえ」を返します。私はクエリをたどりました、それは私を示しています
を呼び出したときになぜ失敗するのか混乱しています level(s,D)
か?
syntax - Prolog でセミコロンを自動化する方法
クラスで Prolog について学んでいて、解決策がなくなるまでセミコロン キーを自動的に押す方法を教えてもらいました。Google で検索してみましたが、findall
表示されていないものを使用した例が表示されます。;
Prolog シェルを自動的に押す他の方法はありますか?
たとえば、;
繰り返し押すことなくすべてのソリューションを表示します。