Свести список, отфильтровать его, чтобы получить числа, отсортировать, чтобы сделать их уникальными:
?- L = [a,[b,[c,5],[c,3]],[c,4]], flatten(L, F), include(number, F, N), sort(N, Unique_numbers).
L = [a, [b, [c, 5], [c, 3]], [c, 4]],
F = [a, b, c, 5, c, 3, c, 4],
N = [5, 3, 4],
Unique_numbers = [3, 4, 5].
Если вы хотите сохранить исходный порядок, вы не можете отсортировать, но есть много ответов на SOкоторые показывают вам, как это сделать.
Если вы не хотите использовать предикаты библиотеки, посмотрите, как они определены (flatten/2
и include/2
), и найдите вдохновение для своего собственного решения.