Estoy trabajando en los ejercicios en Erlang Programming.Aplanar una lista de listas anidadas en Erlang
La pregunta es
escribir una función que, dada una lista de listas anidadas, devolverá una lista plana.
Ejemplo:
flatten([[1,[2,[3],[]]], [[[4]]], [5,6]]) ⇒ [1,2,3,4,5,6].
Pista: use
concatenate
para resolverflatten
.
Y aquí es mi concatenate
función
%% concatenate([[1,2,3], [], [4, five]]) ⇒ [1,2,3,4,five].
concatenate([X|Xs]) -> concat(X, Xs, []).
concat([X|Xs], T, L) -> concat(Xs, T, [X|L]);
concat([], [X|Xs], L) -> concat(X, Xs, L);
concat([], [], L) -> reverse(L).
Realmente quiero saber una manera elegante de poner en práctica flatten
. Pasé horas resolviendo este ejercicio.
ACTUALIZACIÓN: Olvidé el requisito previo más importante. ¿Es posible resolver este problema con solo recursión y coincidencia de patrón?
Sí, es posible! – rvirding