【发布时间】:2017-11-01 02:29:29
【问题描述】:
我正在尝试查找出现在列表中的最常见的长度为 N 的序列。所以我应该写一个谓词 common(L,N,X) 以列表的形式给我这个序列。例如:common([1,2,3,2,3,1,4],2,X) 应该还给我X=[2,3]; common([1,2,3,4,2,2,2,3,4],3,X) 应该回馈X=[2,3,4] 或common([1,2,3],1,X) 应该回馈X=[1] X=[2] X=[3]。
当我们只寻找最常见的元素时,我已经阅读了几篇文章(所以 N=1 的情况),但我不知道如何为一般的 N 做到这一点。我不允许使用 if -then-else 或 clpfd。
我在想也许可以对元素进行分组,然后对它们进行排序,所以对于common([1,2,3,2,3,1,4],2,X),创建一个类似[[1,2],[2,3],[3,2],[2,3],[3,1],[1,4]] 的列表,然后将元素从最常见到最少排序。
【问题讨论】:
标签: list prolog logic sequence