1

私はこれらのプロローグ チュートリアルを読んでいて、それらが使用する概念のいくつかをきちんと把握しているように感じますが、グリッドのようなシステムを実装しようとすると問題が発生します。

リストを使用してこれを設定できることはわかっていますが、これまでのところ、実装方法について空白を描いています。プロローグでグリッドシステムを実行する方法をガイドするために私が見ているリソースまたは何らかのタイプのソースコードはありますか? ?

私が最初から作りたいグリッド システムは 4x4 で、このように出力されるはずです。

(4,1) (4,2) (4,3) (4,4)

(3,1) (3,2) (3,3) (3,4)

(2,1) (2,2) (2,3) (2,4)

(1,1) (1,2) (1,3) (1,4)

コメントについて

グリッドでこれが必要な理由は、私が作成している wumpus ワールドの構造のような迷路を構築し始めているためです。私が望むこのタイプの構造を満たすために。

これは、(3,2) などの正方形 (グリッドの一部) を、エージェントがこのグリッドを通過するようにしたい任意の正方形のピット、ウンパス、または金に割り当てることができる場所です。

これが間違ったアプローチである場合は、そうでない理由を理解していただければ幸いです。また、何に集中する必要があるかについてフィードバックをいただければ幸いです。

これが間違っている場合は、フィードバックをいただければ幸いです。

4

1 に答える 1

2

リストのリストを使用して
[[4,1,I41], [4,2,I42], ... [0,4,I04]]
、各サブリストに座標と各セルの内容に関する情報が含まれるグリッドを表すことができます。

このリストは、何らかの演算子を適用した結果として、別の同様のリストに書き換えることができます (たとえば、セルの内容を別のセルに移動します)。書き換えは適切な述語によって行われます。これは、データ構造の内容がセルへの割り当てによって変更される命令型言語で起こることとは対照的に、通常の論理プログラミングのレシピです。

グリッドが大きい場合は、循環項 (有理ツリー) を使用してグリッドを表し、その中で「移動」し、上記のように書き直されたグリッドの内容を表す別の項を使用する、より精巧なアプローチがあります。

于 2015-04-12T11:36:21.840 に答える