【发布时间】:2020-06-03 17:06:38
【问题描述】:
我在编写下述程序时遇到问题
考虑以下游戏。给出了一个带有三颗黑子、三颗白子和一个空白区域的棋盘。游戏的目标是将黑棋子与白棋子交换位置。移动规则定义以下句子: 交替移动白色和黑色块。每个棋子可以垂直或水平移动,占据一个空白空间。每一块都可以垂直或水平地跳过另一块(任何颜色)。在 Prolog 中编写一个程序,找出所有可能的方法来找到一个获胜的序列。例如,如果我们问这个问题:
? - play (w, s (w, w, w, e, b, b, b), s (b, b, b, e, w, w, w), S, R ).
序言应该回答,例如:
S = [s (w, w, w, e, b, b, b), s (w, e, w, w, b, b, b), ..., s (b, b, b, e, w, w, w)] R = [[w, 2,4], [b, 6,2], [w, 4,6], ..., [w, 4,6]]
这里的[ w, 2,4] 表示将白兵从位置 2 移动到位置 4。当然 Prolog 应该完整返回字母 S 和 R(不带“...”)。
棋盘上不同棋子设置的最大数量是多少?检查查询:
? - play (_, s (w, w, w, e, b, b, b), s (b, b, e, w, w, b, w), _, _).
Prolog 的回答是什么意思?提示:先解决 play/4 的问题,不用 R
还有一个游戏板,看起来像这样:
我什至不知道从哪里开始?我怎样才能做到这一点?你们能帮我解决这个问题吗?
【问题讨论】:
-
几个小时前已经发布了同样的问题:stackoverflow.com/questions/62199178/… - 建议一起解决这个问题。
-
除了我是第一个写这个问题的人。但我想我们都需要为学校这样做。
-
嗯,是的。该问题甚至可能已经在“Prolog”问题堆栈中的某个位置。
-
我看到候补提问者的问题消失了。嗯嗯。
标签: prolog state-space