1

Prologでデータベースを作成することを考えると、リストを使用することは明らかに効果がないようです。ですから、私が知りたいのは、インデックスによって要素にアクセスできるかどうか、そして理論的にはどのようにして大規模なデータベースを作成できるかということです。

私が興味
を持っているもう1つの主題は、次のような単純なタスクを実装する方法です。2つの配列
A[1,3,5,2,6,4]とB["a"、 "b"、"d"があると仮定します。 、"e"、 "c"、 "f"]
目標は、文字を数字にバインドし、両方の配列を並べ替えて
A[1,2,3,4,5,6]とB["a"、"を取得することです。 e "、" b "、" f "、" d "、" c "]

4

2 に答える 2

3

データベースの質問について:データを保存するためにPrologファクトを使用することは非常に一般的です。SWI-Prologおよびその他のシステムは、動的インデックスを自動的に構築して、そのようなコレクションへの高速アクセスをサポートします。2番目の質問については、たとえばkeysort/2[1-"a"、3-"b"、...、4-"f"]という用語で使用します。ライブラリ(ペア)のpairs_keys_values/3および関連する述語を参照してください。

于 2012-04-18T13:43:36.777 に答える
1

isAtIndex( index, valueAtIndex )インデックスの場合、各要素のように、リストをファクトのコレクションとして表す方がよいでしょう。おそらく、Prologはあなたが望む適切な事実と一致しなければならないインデックスメカニズムを使用するでしょう(つまり、証明するように依頼するisAtIndex(3,Value)と、Valueを一致する値にバインドします)。

同様に、2番目の質問についても、2つのアレイを一緒に歩き、pair(valueFromA, valueFromB)それぞれについてのようなものを主張します。次に、Aのソートされたバージョンを作成することができ、これですべての設定が完了しました。

于 2012-04-18T13:42:40.200 に答える