Sto lavorando sugli esercizi in Programmazione Erlang.Appiattisci un elenco di elenchi annidati in Erlang
La domanda è
scrivere una funzione che, data una lista di liste nidificate, restituirà una lista piatta.
Esempio:
flatten([[1,[2,[3],[]]], [[[4]]], [5,6]]) ⇒ [1,2,3,4,5,6].
suggerimento: utilizzare
concatenate
per risolvereflatten
.
E qui è la mia funzione concatenate
%% 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).
voglio davvero sapere un modo elegante per implementare flatten
. Ho passato ore a risolvere questo esercizio.
UPDATE: Ho dimenticato il prerequisito più importante. È possibile risolvere questo problema con solo ricorsione e corrispondenza modello?
Sì, è possibile! – rvirding