1

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

我知道我可以用一个列表来设置它,但到目前为止,我对如何实现它还一无所知,是否有资源或某种类型的源代码可以指导我如何在 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 回答 1

2

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

然后,由于对该列表应用了某些运算符(例如,将单元格的内容移动到另一个单元格的内容),该列表可以被重写为另一个类似的列表。重写将由适当的谓词完成,这是通常的逻辑编程配方,与在命令式语言中发生的情况相反,其中数据结构的内容将通过分配给单元格来修改。

如果网格很大,还有一种更精细的方法,使用循环项(有理树)来表示网格并在其中“移动”,并用一个单独的术语表示网格内容,如上所述重写。

于 2015-04-12T11:36:21.840 回答