1

注意:这个问题是基于对我之前类似问题的重新思考。

我想知道 Erlang 的sofs:partition是否与 Wikipedia's page about Set partitions中描述的相同。

如果是这样,我怎样才能得到以下结果?

给定一个数据结构(一组集合或列表列表):

   [a,b,c]
    [a,b]
    [c]
    [d,e,f]
    [d,f]
    [e]

其中包含以下独特元素:

a,b,c,d,e,f

使用参数运行函数的结果N = 2应该是:

[[a,b,c], [d,e,f]]

而在执行过程中需要过滤掉以下分区sofs:partition

[[a,b,c], [d,f], [e]]
[[a,b], [c], [d,e,f]]
[[a,b], [c], [d,f], [e]]

我可以用 sofs:partition 做到这一点吗?length(Partition) =/= N如果是,我可以迭代地做,在执行过程中扔掉分区吗?是否有可能以某种方式重新定义sofs:partition函数以引入 N 参数?

4

1 回答 1

0

您可能只需将 sofs:partition 的结果传递给 lists:foldl 并手动过滤掉长度错误的分区。

如果它不适合你的任务(例如第二次运行是不可接受的),你可以去看看sofs 源代码,以它为例子,并制作你自己的函数,一次完成你所需要的。

于 2012-04-19T20:36:33.540 回答