【发布时间】:2017-03-29 19:55:21
【问题描述】:
首先,请原谅我是 Prolog 的菜鸟。 我想要实现的只是 创建一个谓词 - 对于对象 [0,1] - 给定所需的长度(例如 3) - 查找给定长度的所有可能排列(重复)(0 可以多次添加,1 可以多次添加,例如,如果我有相同对象的列表则没问题...)
例子:
? myPermutation(3, [0,1], L).
L = [0,0,0]
next->
L = [0,0,1]
next->
L = [0,1,0]
next->
L = [0,1,1]
....
next->
L = [1,1,1]
有人可以请帮助我吗? 非常感谢...
提示:我正在考虑使用 delete 谓词的一些东西...比如给出对象列表并询问 Prolog 以了解从 [0,1] 中删除对象的所有可能方法。
【问题讨论】:
-
我有那个谓词:del(X,[X|Tail],Tail)。德尔(X,[Y|尾巴],[Y|尾巴1]):-德尔(X,尾巴,尾巴1)。我查询del(X,[0,1],_)。通过回溯返回 X = 0 X = 1 false。所以我想我们仍然需要一个带有累加器的谓词,给定一个长度,使用建议的 del 准备一个 [0,1,...,1] 列表并回溯到所有解决方案
标签: list prolog permutation