1

プロローグ (swipl) のマトリックスの場所へのランダム アクセスが必要です。リストを処理するプロセスを経ることなく、マトリックス内のランダムな場所を作成してアクセスする方法を提供するライブラリを提案してください。

4

1 に答える 1

3

SWI-Prolog には無制限のアリティ タームがあるため、外部ライブラリはまったく必要ありません。term の引数にアクセスするためのビルトインがいくつかありますが、argが便利だと思います。例えば:

?- A = array(1,2,3,4,5,6,7), arg(3, A, X).
X = 3.

処理する必要があるデータと、これらのマトリックスへのアクセス頻度に応じて、データの隠蔽を適用して、好みのインターフェイスを提供できます。

たとえば、インデックスの検証が必要になる場合があります。

?- A = array(1,2,3,4,5,6,7), arg(8, A, X).
false.

例外はスローされないことに注意してください...

arg/3は一致する引数を検索することもできます:

?- A = array(1,2,3,4,5,6,7), arg(P, A, 4).
A = array(1, 2, 3, 4, 5, 6, 7),
P = 4 .

編集

Prolog では、代入は常に注意して処理する必要があります。プログラミングモデルが実際にはそれに適していないからです。しかし、 nb_setargのように、作業を行う組み込み関数がいくつかあります。関連するドキュメントのセクションを参照してください。

于 2012-09-23T14:25:13.303 に答える