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