[Prolog]Генерация всех возможных подсписков у списка
У меня есть два предиката, делающих следующее:
conc(List1, List2, List3) - соединяет List1 и List2 в List3
sublist(List1,List2) - проверяет, является ли List1 подсписком List2.
Чтобы получить все возможные подсписки List2, я делаю List1 переменной, т.е пишу что-то вроде sublist(S,[1,2,3], write(S), nl, fail.
При этом я получаю в качестве решений несколько пустых списков. Естественно, пустой список является подсписком, но я бы хотел получить решение без пустых списков. Как я могу это ограничить?
Остановился на этом:
conc([], L, L).
conc([N|L1], L2, [N|L3]):-conc(L1,L2,L3).
sublist([],L):-!.
sublist(S, L):-
conc(L1, L2, L),
conc(S, L3, L2).