問題タブ [sicstus-prolog]
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 パワーセット述語
P が X の累乗集合である場合に真となる述語 powerset(X, P) を定義したいと思います。P が地面であるかどうかに関係なく機能するはずです。
prolog - Prolog でのバックトラッキング中の状態伝搬
Prolog に、特定の状態空間を検索する単純なプログラムがあるとします。
そして、私はそれを知っています:
generate(State, NewState)
NewState
与えられたものに対して少なくとも 1 つを生成しているState
- 全状態空間は有限である
search
述語を変更して、常に有限の時間でチェックインできるようにしたいと考えています。だから私は次のようなものを書きます:
これは機能していますが、バックトラッキング中に計算された状態が失われているため、スペース サイズの最大高さを持つ検索ツリーができました。
計算された情報を失うことなく、バックトラッキング中に状態を伝播する方法はありますか? O(space_size) ノードを持つ検索ツリー全体が必要です。出来ますか?
編集:assert/[1,2]
グローバルメモリとして機能する新しい句を動的に作成するために
使用する必要があるようです。
map - プロローグ連想リスト
Prolog で簡単なプログラムの安全性チェッカーを書いていますが、変数の評価を保持するためのデータ構造が必要です。同じ状態を再び訪れていることを検出したいので、この構造は合理的な比較セマンティクスをサポートする必要があるため、訪問した状態をセットに格納できます。
library(avl)
便利な getter/setter インターフェイスを備えています。問題は、同じマッピングを保持する AVL が複数の形式を取る可能性があることです。したがって、AVL 表現が異なる場合、2 つの同一の状態は異なると見なされます。
順序付きリストでマッピングを保持する構造には、この問題はありません。ただし、Sicstus のドキュメントにはそのようなものは見つかりません。必要なことを行う標準構造はありますか、それとも自分で実装する必要がありますか?
performance - Prolog で節の最適な順序付けのために統計を収集するライブラリ/手法はありますか?
文字列が特定のパターンに一致するかどうかを確認する必要があるプログラムを作成しています。今のところ、20 を優に超える異なる定義を持つルールに一致するパターン (S) として、これを Prolog に実装しています。
パターン チェック述語を使用して、すべてのバイナリ文字列を特定の長さまで実行することになります。プログラムはかなり遅いです (Prolog はよくあることですが)。非常に多くの異なる定義があるため、理想的には、最も一致するものを順序付けの最初に並べ、Prolog によって最初に一致するように並べ替えたいと考えています。できる限り。
現在、SWI Prolog を使用していますが、SICStus にアクセスできるので、SICStus または無料で入手できる Prolog インタープリターを使用したいと考えています。
eclipse - Juno の SICStus Eclipse SPIDER メニューの「Compile Prolog Code」(Alt+K) はどうなりましたか?
次の URL からダウンロードして、Eclipse Indigo から Classic Eclipse 4.2 Juno にアップグレードしました 。 -win32-x86_64.zip
この更新 URL から Eclipse Juno に SPIDER をインストールしました: http://www.sics.se/sicstus/update/
現在、Juno を起動すると、ショートカット ALT+K を使用して現在の Prolog コードをコンパイルできなくなりました。このオプションは、SPIDER が提供する SICStus メニューからも削除されます。
なぜこれが起こっているのか、またはそれに対処する方法を誰か説明できますか? あまり入力せずにコードをコンパイルしたい! ありがとう。以前と同じワークスペースと、まったく新しいワークスペースの両方を使用してみました。
編集:私はWin7 64ビットシステムを使用しており、Juno Classicが新しくインストールされ(SPIDERプラグインを除く)、まったく新しいワークスペースがあります。
EDIT2: Alt+K は、最初に新しく作成または開いたファイルに表示されるようですが、他の *.pl ファイルで「ファイル -> 開く」を実行すると、SICStus メニューの Alt+K オプションが「移動」してのみ機能しますこの新しいファイル (他のファイルではありません)。この振る舞いは私には非常に奇妙に思えます。
EDIT3:Per Mildnerからのサポート回答の後、たとえば、新しく開いたファイルを一度に1つずつ、これを「ほぼ機能する」ようにすることができます。私は今、彼が 8 月の休暇から戻ってくるのを待っているか、誰か他の人がこの奇妙な問題に対するより良い、より恒久的な解決策を提供してくれるのを待っています。
debugging - Sicstus Prolog: デバッグ中に現在のバインディングを表示
私は Prolog を初めて使用し、コードのデバッグに Sicstus を使用しています。を使用してクエリを実行しているときに、すべてのバインディングを表示する方法はありますtrace/0
か? または、手順中に印刷する他の方法はありますか?
prolog - Prolog(SICStus)で述語が期待どおりに機能しない
プロローグ述語に問題があります。
私はボードを1つ持っていますが、1人のプレーヤーがモバイルピースと呼ばれる1〜10の値のピースを持っていないかどうかを確認したいと思います。コードは上に示されています:
この例では、結果は「はい」であるはずですが、「いいえ」です。なぜですか?誰でもコードでエラーを取得できますか?
よろしく
get - プロローグでシステムから現在の年を取得する必要がある
私はstackoverflowとPrologが初めてです。
現在の年を取得して、「BD > currentYear」のような比較で使用したい。私が行ってきた調査から、「use_module(library(system))」を使用する必要があると思いますが、方法がわかりません...
手伝って頂けますか?
ありがとうございました!
prolog - Prolog制約処理:パッキングスクエア
私はプロローグの制約処理の問題を解決しようとしています。
5x5、4x4、3x3、2x2の4つの正方形を10x10のグリッドに詰める必要があります。それらは重複してはいけません。
私の変数は次のようになります。
Xは5、4、3または2のいずれかです。インデックスiは行を表し、ドメインはグリッド内の列を表します。
私の最初の制約は、正方形の幅と高さを定義しようとします。私はそれをそのように定式化します:
そのため、可能なポイントは、互いにX行と列の範囲内に収まるように制限されます。ただし、Prologはこれらの制約で停止し、次の結果をもたらします。
したがって、他の正方形をチェックすることさえせずに、そこで停止します。私の制約はおそらくきつすぎるでしょうが、その理由や方法がわかりません。助言がありますか?