【问题标题】:How does sofs:partitions in Erlang work?Erlang 中的 sofs:partitions 是如何工作的?
【发布时间】:2012-01-05 12:39:56
【问题描述】:

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

我想知道 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 参数?

【问题讨论】:

    标签: erlang set data-partitioning


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-01
      • 2016-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-03
      • 1970-01-01
      • 2014-07-26
      相关资源
      最近更新 更多