我是Prolog的最大新手之一,我试图了解如何将以下谜语编写为Prolog代码:
“为了说明实际的生产系统,我们考虑了 接下来的任务。我们有三块不同大小的砖块坐在 一堆我们要确定三个可定位的位置 用机器人的“手”把砖砌起来;将这些位置称为1、2和3。我们的目标 是按照大小顺序将砖块放在这些位置, 位置1最大,位置3最小。”
那么这实际上如何工作?我认为首先,需要有一个这样的工作记忆:
(brick name: brick1 size: 3 position: heap)
(brick name: brick2 size: 4 position: heap)
(brick name: brick3 size: 5 position: heap)
目标是位置1的Brick3,位置2的Brick2和位置3的Brick 1。
我也知道我需要2条生产规则,第一个规则将最大的砖放在手边,另一个规则将手中的砖放在下一个位置,但是我如何将这些规则表示为Prolog代码而我将运行什么命令以获得结果?
编辑:我只知道我的规则应该是:
IF (brick position: heap name: n size: s)
−(brick position: heap size:{> s})
−(brick position: hand)
THEN MODIFY 1 (position hand)
IF (brick position: hand)
(counter value: i)
THEN MODIFY 1 (position i) MODIFY 2 (value [i + 1])