問題タブ [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 で、このクエリがこの特定の結果を返すのはなぜですか
このクエリの効果と、この特定の結果が返される理由は何ですか?
prolog - SICStus Prolog /SWI-PrologREPLでの述語の定義
http://cs.union.edu/~striegnk/learn-prolog-now/html/node3.html#subsec.l1.kb1を読んでいますが、次の述語の実行に問題があります。
一方、ファイルに書き込んでファイルを参照して実行すると、正常に機能しているようです...
後でそれらを参照する必要があるファイルでのみ述語を定義することは許可されていますか?エディター自体でそれを行うことはできませんか?
prolog - プロローグ演習 2.3 を学ぶ
プロローグの学習 Web サイトにアクセスして、いくつかのプロローグを学習し、演習 2.3 を理解しようとしています。word() へのすべての呼び出しは、ある種のスタックかそこらに 1 つ下がると思います。これは、単語を最後から最初に戻すように見える理由を説明するでしょう。しかし、単語の 1 つを少し上に変更すると、再び下に戻るのはなぜですか?
お気に入り:
犯罪者が犯罪者を食べる
犯罪者が大きなカフナ バーガーを食べる
犯罪者はすべての 犯罪者を食べる
犯罪者は大きなカフナ バーガーをすべて食べる
次に、swi-prolog の質問で、true/false の代わりに yes/no を言うようにすることは可能ですか?
宜しくお願いします アンダース・オルメ
swi-prolog - SWI-Prolog - 長いリストを表示
SWI-Prolog を使用していて、リストを印刷しようとしていますが、リストに項目が 9 つ以上ある場合は、次のようになります。
リスト全体を表示する方法はありますか?
list - グラウンド/1の使い方は?
私は Prolog の完全な初心者であり、使用方法を知りたいと思っていましたground/1
。
現時点では、次のコードがあります。
しかし、シェルでこれを呼び出そうとすると:
正しい答えが得られX=[a,b]
ますが、別の答えが残っていると思われるかのように、クエリは終了しません。だから、「;」を押します そして、出力として「false」を取得します。ground/1
ケースを処理するために3番目のリストがすでに完全にインスタンス化されているかどうかを確認するために使用する必要がある別の質問の回答を読みました。
つまり、完全な初心者なので、その方法がわからないのです。それで、地面がどのように機能するか、それを使用して特定のパラメーターのインスタンス化をチェックし、それを使用してコードが存在しない答えをチェックしないようにする方法を説明してくれる親切な人はいますか?
prolog - プロローグリストを処理するには?
私は述語を持っていて、m(L,L)
それが取るリストを返したいと思っています。コードは次のとおりです。
この例で使用しようとすると:
私はこれを答えとして得ます:
(少ない要素で試してみれば問題ないことに気付きました。)なぜこれが起こっていて、リストが完成していないのですか?
どうすればこれを回避できますか?
本当にばかげた質問で申し訳ありませんが、ウェブを検索しましたが、理解に役立つドキュメントが見つかりませんでした...ありがとう!
prolog - SWI-Prolg トップレベルを変更する
SWI Prolog のトップレベルを変更することはできますか?
prolog - 失敗による手動リスト反復と再帰を使用することの長所と短所は何ですか
私はいつもこれに立ち向かいますが、どの方法で攻撃すればよいかわかりません。以下は、いくつかのシーズン ファクトを処理するための 2 つの方法です。
私が解決しようとしているのは、方法 1 または 2 のどちらを使用するか、およびそれぞれの長所と短所、特に大量の事実です。
methodone
事実が利用可能であるため、わざわざそれらのリスト (特に大きなリスト) を作成するのは無駄に思えます。リストが十分に大きい場合、これにはメモリへの影響もあるはずです。また、Prolog の自然なバックトラッキング機能を利用していません。
methodtwo
私のために再帰を行うためにバックトラックを利用しています。メモリ効率がはるかに高いと思いますが、一般的にこれを行うのは良いプログラミング方法ですか? 従うのは間違いなく醜いです、そして他の副作用があるかもしれませんか?
私が見ることができる1つの問題は、呼び出されるたびfail
に、呼び出し元の述語に何かを返す能力を失うことです。だった場合methodtwo(SeasonResults)
、意図的に述語を継続的に失敗させるためです。そのmethodtwo
ため、状態を保存するにはファクトをアサートする必要があります。
おそらく(?)メソッド2は、(大きな)リスト処理を行う必要がないため、高速になりますか?
リストがあれば、それが進むべき道だと想像できmethodone
ます..またはそれは常に真実ですか?methodone
を使用してリストをファクトにアサートし、メソッド 2 を使用してそれらを処理することは、どのような状況でも理にかなっているでしょうか? 完全な狂気?
しかし、繰り返しになりますが、事実を主張することは非常に「費用のかかる」ビジネスであると読みました。そのため、大きなリストであっても、リストの処理が進むべき道でしょうか?
何かご意見は?または、(何の)状況に応じて、一方を使用して他方を使用しない方が良い場合がありますか?例えば。メモリの最適化には、事実のアサートを含む方法 2 を使用し、速度には方法 1 を使用しますか?
prolog - 値の代わりにメモリ位置を返すprolog関数
プロローグでプログラミングを始めたばかりで、いくつか問題があります。私が持っている関数は、値Xを取り、それをN回Mにコピーすることになっています。私の関数は、N個のメモリ位置のリストを返します。これがコードです、何かアイデアはありますか?
list - Prologでの「最後」の実装
Ulle Endrissの講義ノートを読んで、Prologプログラミングの感触をつかもうとしています。エクササイズの解決策が期待どおりに機能しない場合、適切な説明をするのは難しいと思います。これは、Prologが式を評価する方法についての私の不安定な理解と関係があると思います。
last1
20ページの演習2.6では、組み込みの述語のように動作する述語の再帰的な実装が必要last
です。私の試みは次のとおりです。
正解ですが、複数の要素を含むリストの場合、クエリを終了するにはセミコロンを入力する必要があります。これはlast1
、組み込みのとは異なりlast
ます。
ルールとファクトを宣言した順序を切り替える場合は、どちらの場合もセミコロンを入力する必要があります。
last1
私は、Prologがそれがもう1つの解決策(したがってセミコロン)を持っているかもしれないと考える理由を知っていると思います。評価シーケンスに従っていると思います
Rest
これは、との一致を回避する方法を探す必要があることを示唆しているよう[]
です。とにかく、宣言の順序を切り替えることがなぜ効果があるのか、私には説明がありません。
質問1: の振る舞いの正しい説明は何last1
ですか?
質問2:last1
組み込みと区別がつかない 述語を実装するにはどうすればよいlast
ですか?