所以我一直在做一些事情来帮助我更好地理解 Prolog。我拿了传统的水壶问题,但增加了一些难度。因此,我的代码运行良好。剩下要做的就是为输出做一些漂亮的格式化。目前,它只显示了我的代码中找到的最小路径来填充水罐。(见下面的例子)
到目前为止,我想了一种方法可以做到这一点,但我不知道如何在 Prolog 中做到这一点。
我的最佳路径的最终列表格式如下:[ [x(a,b),y(c,d),z(e,f)], [], [], ...]
我想达到这种格式(有关更详细的输出,请参见下文):
a -> b
c -> d
etc
- 首先,我打印第一个作为液体的(在我们的例子中,1。否则,列表中的第一个元素是初始模式)。然后,我获取第一个子列表,并与之前的一个进行比较,看看哪个水壶确实转移到另一个并打印出来。然后,继续,直到列表为空。
目前,它显示了这一点:
?- problem.
[[jug(3,0),jug(5,0),jug(8,8)],[jug(3,0),jug(5,5),jug(8,3)],
[jug(3,3),jug(5,2),jug(8,3)],[jug(3,0),jug(5,2),jug(8,6)],
[jug(3,2),jug(5,0),jug(8,6)],[jug(3,2),jug(5,5),jug(8,1)],
[jug(3,3),jug(5,4),jug(8,1)],[jug(3,0),jug(5,4),jug(8,4)]]
true .
这是当前水罐配置的正确路径。(我稍后会添加一个处理 n 壶的方法)
这是我希望它显示的方式(在我的代码中,您可以看到我想要的每个索引):
?- problem.
1 -> 2
2 -> 3
3 -> 1
2 -> 3
1 -> 2
2 -> 3
3 -> 1
true.
我很想得到这个帮助,因为我正在尝试的一切都是一团糟。
谢谢男孩/女孩<3