Я работаю над проблемой сглаживания только одного уровня списка в Prolog. Например, [[1],[2,3]]
станет [1,2,3]
, но [[1,[2]],3]
будет только сглаживать до [1,[2],3]
. Я просмотрел некоторые другие вопросы на сайте, но никто не ответил на этот вопрос, и я просто не могу заставить свой код работать во всех моих тестовых случаях.Сглаживание только одного уровня списка в Prolog
Обновление: код работает! Вот окончательный ответ, который я пришел:
my_flatten([], []).
my_flatten([A|B],L) :- is_list(A), my_flatten(B,B1), !, append(A,B1,L).
my_flatten([A|B],[A|B1]) :- my_flatten(B,B1).
возможного дубликата [Получить элементы из списка списков] (http://stackoverflow.com/questions/9777077/get-elements-from-list-of-lists) – false
Лучше всего [использовать DCG] (http://stackoverflow.com/a/9787502/772868). – false
Что значит «работает только около половины времени?» – false