問題タブ [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 - Prolog で「true」と「false」の出力をオフにする方法は?
Prolog を使用して小さなテキスト ベースのアドベンチャー ゲームを作成したいと考えています (これはばかげた考えかもしれませんが、それについて議論するつもりはありません)。
唯一の問題は、「true」と「false」の値も表示されないと、画面にテキストを印刷できないことです。
たとえば、次のようなことを試してみると:
wheretake
は、1 か所の述語とdesk
、出力として取得する名前です。
この「真」または「偽」の出力を取り除くにはどうすればよいですか?
format/1
単純なテキスト出力用の1か所の述語と、format/2
2か所の述語(変数の名前を出力したい場合)も試してみましたが、まったく同じ問題が発生します。
私もこの回答を見ましたが、最初は十分に詳細ではありません(少なくとも私のような人にとってはそうではありません).2番目に、もっと簡単な方法があることを願っています.
最後に、SWI-Prolog を使用しています。
ありがとうございました。
prolog - プロローグ、端末で正しい答えを得るが、プログラムの実行時に間違った答えを得る
ターミナルで「prolog」と入力すると、次のようになります。
タイピング:
取得:
次にEnterを押すと、次のようになります。
タイピング:
取得:
ファイルを書くとき; これで構成されるtest.pl:
そして、ターミナルに次のように書き込みます。
私は得る:
ここでの答えはノーであるべきではありませんか?私は何を間違っていますか。また、プロローグでこれを行う方法は次のとおりです。
つまり、プロローグのトップ レベルにクエリを送信し、回答を取得したい
prolog - プロローグの結果がわからない
私はプロローグが初めてです。私はこのコードを持っています:
私は尋ねjealous(vincent,W)
た。しかし、SWI-Prolog は私にW = vincent
! そうではないW = marsellus
でしょうか?
prolog - 私の replace/2 プログラムが常に false を返すのはなぜですか?
'_'
私の目標は、特定のリスト内の を論理変数に置き換えることです。私のコード:
適切なリストを返しますが、常にfalse
. 何か助けてください。
prolog - swi-prolog forall 関数が機能しない
私は述語を持っています
および の結果の 2 つfind('Rogue').
。結局、述語はそのうちの 1 つだけを出力します。ただし、forall(..)
コンソールにコピーペーストすると、2 つの結果がすべて表示されます。なんで?
prolog - 再帰推移閉鎖の定義
多くの述語は、基本的に何らかの形式の推移閉包を使用しますが、終了にも対処する必要があることを発見するだけです。これを一度だけ永遠に解決してみませんかclosure0/3
:
この定義を推移閉包の実装に使用できない場合はありますか?
なぜ dif/2 なのですか?
@WouterBeek のコメントに詳細に答えるには: dif/2
oriso_dif/2
は、潜在的な問題を表示または通知できるため、理想的です。ただし、現在の実装では、トップレベルのループが実際の問題を隠していることがよくあります。closure0(\_^_^true,a,b)
確かにそれ自体が非常に問題のある目標を考えてみましょう。次のシステムを使用する場合、実際の問題は直接目に見えません。
どちらの最上位ループも、実際に見たいもの、つまりダングリング制約を示していません。SICStus では、置換を生成するために疑似変数が必要です。SWI では、クエリを でラップする必要がありますcall_residue_vars/2
。このようにして、制約が付加されているすべての変数が表示されるようになりました。
prolog - ユーザー入力プロローグを取得して保存する方法
ユーザーに誕生日を入力してもらい、星座を伝えようとしています。しかし、実際の誕生日と月を取得するのに苦労しています。誰か助けてくれませんか?読み取りをさまざまなファンクターに分離しようとしましたが、エラーが発生し続けます。両方の読み取りを組み合わせると、「構文エラー: 演算子の優先順位が衝突します」というエラーが表示されます。両方の読み取りを分離すると、「エラー: =:=/2: 引数が十分にインスタンス化されていません」というエラーが表示されます。
読み取りを組み合わせるときのコード:
読み取りを分離するときのコード:
list - Prolog リストがコンソールにすべての要素を出力しない
SWI-PROLOG バージョン 6.6.6 を使用しています
特定の述語タイプのすべての属性を出力したいと考えています。
私はアリティ2の法と呼ばれる述語を持っています。
いくつかの事実は
等
ここで、タイプを入力して法にアクセスしたいと思います。そのような、
これは完全に機能します。ここで、ユーザーがすべての種類の法律が存在することを知りたいので、ユーザーはそれをクエリとして入力して、対応する法律を取得できます。元power(money).
このために、これらすべてのキーワードを取得してリストに追加し、リストを表示するクエリを作成しました。しかし、最終的に印刷されるリストは完全ではありません。
このコードを使用してリストを取得します。しかし、コンソールの出力は
しかし、著作権侵害の後でさえ、より多くの種類の法律があり、それらはコンソールに出力されません。どうすれば印刷できますか?