SPSBenchmark/src/partition.erl

17 lines
475 B
Erlang

-module(partition).
-export([list/2]).
list(List, N) ->
RevList = split_list(List, N),
lists:foldl(fun(E, Acc) -> [lists:reverse(E)|Acc] end, [], RevList).
split_list(List, Max) ->
element(1, lists:foldl(
fun (E, {[Buff|Acc], C}) when C < Max ->
{[[E|Buff]|Acc], C+1};
(E, {[Buff|Acc], _}) ->
{[[E],Buff|Acc], 1};
(E, {[], _}) ->
{[[E]], 1}
end, {[], 0}, List)).