sofs:Erlang中的分区如何工作?

时间:2012-01-05 12:39:57

标签: erlang set data-partitioning

注意:此问题是基于重新考虑我之前的类似question

我想知道Erlang的sofs:partition是否与维基百科关于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做这个:分区吗?如果是,我可以迭代地执行,在执行期间丢弃length(Partition) =/= N的分区吗?是否有可能以某种方式重新定义sofs:partition函数以引入N参数?

1 个答案:

答案 0 :(得分:0)

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

如果它不适合您的任务(例如第二次运行是不可接受的),您可以查看sofs sources,将其作为示例使用并制作您自己的功能,在一个中完全满足您的要求通过。