Есть список: [a, 1, !, b, 2, @, c, 3, #, d, 4, $, ....]
Нужно получить 3 списка: [a, b, c, d, ...], [1, 2, 3, 4, ...], [!, @, #, $, ...]
Swi prolog:
p([],[],[],[]).
p([H|Tail],[H|A],B,C):-char_type(H,alpha),!,p(Tail,A,B,C).
p([H|Tail],A,[H|B],C):-number(H),!,p(Tail,A,B,C).
p([H|Tail],A,B,[H|C]):-p(Tail,A,B,C).
?- p([a, 1, !, b, 2, @, c, 3, #, d, 4, $],A,B,C).
A = [a, b, c, d],
B = [1, 2, 3, 4],
C = [!, @, #, $].
|