2012-01-05 53 views
1

注意:這個問題是基於我以前類似question的反思。sofs:Erlang中的分區如何工作?

我想知道如果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]] 

雖然下面的分區應該是fil

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

我能做到這一點用的SOF:分區執行sofs:partition的過程tered了呢?如果是,我可以迭代執行,在執行期間拋出length(Partition) =/= N的分區嗎?是否有可能以某種方式重新定義sofs:partition函數來引入N參數?

回答

0

您可能只需將sofs:partition的結果傳遞給lists:foldl並手動過濾掉長度錯誤的分區。

如果它不適合你的任務(例如第二次運行是不可接受的),你可以去看看sofs sources,用它作爲例子,並使你自己的函數完成你所需要的一次。