【发布时间】:2020-12-14 20:59:00
【问题描述】:
我在 Prolog 中找不到以下问题的解决方案。
假设我们有一个包含 N+1 个成员的列表(即 [X1, X2, X3, ..., XN, X(N+1)])。我们想在 prolog 中编写一个谓词(带有递归),它生成所有可能的列表,这些列表已经反转了它们的前 m 个成员,其中 m 取值 2必须采用
形式move(List1, List2):-
其中 List1 是原始列表,List2 是 m 个第一个成员反转后的结果列表。
非常感谢任何帮助。
提前致谢
【问题讨论】:
-
您可以通过组合谓词
append(P,S,L)(将列表L分解为前缀P和后缀S)和reverse(P,R)(转换列表@987654327)来获得所需的结果@进入对应的反向列表R)。
标签: recursion prolog predicate