如何在 GNU Prolog 中设置和打印网格

How to set up and Print out a Grid in GNU Prolog

我正在阅读这些 prolog 教程,我觉得我对他们使用的一些概念有了很好的掌握,但我在尝试实现类似网格的系统时遇到了问题。

我知道我可以用一个列表来设置它,但到目前为止我对如何实现它一无所知,是否有资源或某种类型的源代码可以指导我完成操作序言中的网格系统?

我想从头开始制作的网格系统是 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) 作为我希望我的代理遍历此网格的任何正方形中的坑或 wumpus 或黄金。

如果这是错误的处理方式,我将不胜感激,并希望得到一些关于我需要关注的方面的反馈。

如果有任何错误,我将不胜感激。

您可以使用列表的列表来表示您的网格
[[4,1,I41], [4,2,I42], ... [0,4,I04]]
其中每个子列表都有关于每个单元格中内容的坐标和信息。

由于对其应用了一些运算符(例如,将单元格的内容移动到另一个单元格),此列表可能会被重写为另一个类似的列表。重写将通过适当的谓词完成,这是通常的逻辑编程方法,与命令式语言中发生的情况形成对比,在命令式语言中数据结构的内容将通过对单元格的赋值进行修改。

如果网格很大,有一个更复杂的方法,使用循环项(有理树)来表示网格,"moving"在其中,用一个单独的项来重写网格内容如上