17 lines
475 B
Erlang
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)).
|