Я работаю над упражнениями в Erlang Программирование.Сгладить список вложенных списков в Erlang
Вопрос заключается в
Написать функцию, которая, учитывая список вложенных списков, будет возвращать плоский список.
Пример:
flatten([[1,[2,[3],[]]], [[[4]]], [5,6]]) ⇒ [1,2,3,4,5,6].
Подсказка: использовать
concatenate
решитьflatten
.
И вот моя 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).
Я действительно хочу знать элегантный способ реализации flatten
. Я много часов решал это упражнение.
ОБНОВЛЕНИЕ: Я забыл самое важное условие. Возможно ли решить эту проблему только с рекурсия и соответствие шаблону?
Да, это возможно! – rvirding