【问题标题】:How to set up and Print out a Grid in GNU Prolog如何在 GNU Prolog 中设置和打印网格
【发布时间】:2015-04-10 04:32:20
【问题描述】:

我正在阅读这些 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)

对于cmets

我需要在网格中使用它的原因是因为我开始为我正在创建的 wumpus 世界构建一个类似迷宫的结构,我认为这是我应该采用的方法,但我在创建一个满足我想要的这种结构的列表类型。

这是我可以分配一个正方形(网格的一块),例如 (3,2),在我希望我的代理遍历此网格的任何正方形中作为一个坑或 wumpus 或金子。

如果这是处理此问题的错误方法,我会很感激为什么不是这样,并希望得到一些关于我需要集中精力的反馈。

如果这个错误,我将不胜感激任何反馈。

【问题讨论】:

  • 那个“网格”应该有什么形式?您想要一个表示网格的数据结构,还是希望通过副作用输出一个网格?
  • @repeat 的问题很有道理:你打算用网格做什么?为什么需要这样打印出来?你真的需要这样打印,还是只需要一个布局类似的数据结构?
  • 这是我在网上找到的 wumpus 世界示例,我从未做过这样的逻辑编程,所以我试图以某种方式进行设置,以便我可以分配每个方格(坐标) 到一个坑、wumpus 或金子,给出这些坐标的事实。然后我需要我的代理遍历这些列表/正方形/坐标以在需要时杀死 wumpus,并取回黄金然后返回 1,1(他总是从那里开始)。
  • 您唯一显示的是标准 x、y 网格坐标的通用显示,用于 4x4 网格,原点位于左下角。我不确定您所指的 approach 是什么。我没有看到任何 Prolog 代码,也没有看到您当前如何认为您正在确定给定位置是否有坑、wumpus 或金子。也许澄清一点?你查过 Prolog 列表结构吗?它是 Prolog 中处理事情的主要结构。
  • 之前的 cmets 询问了这个网格将用于什么的上下文,鉴于我遇到的问题的范围,我一直在尝试像列表一样实现它,但到目前为止出现错误,我真的不明白创建这样一个网格需要使用的操作的语法,这就是我问的原因。我无意寻求帮助,包括稍后会出现的附加内容(如 wumpus 位置和坑所在的位置),我只想设置一个网格以便开始操作它,我基本上需要创建一个结构来乱来。

标签: list grid prolog wumpus-world


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2023-03-04
    • 2010-11-08
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    相关资源
    最近更新 更多