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

时间:2015-04-10 04:32:21

标签: list grid prolog wumpus-world

我正在阅读这些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或黄金的任何方格我想让我的代理遍历这个网格。

如果这是错误的方法,我会理解为什么它不是,并希望得到一些我需要集中精力的反馈。

如果错,我会感激任何反馈。

1 个答案:

答案 0 :(得分:2)

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

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

如果网格很大,使用循环项(理性树)来表示网格并且移动"有更复杂的方法。其中,网格内容的单独术语按上述方式重写。