split([],[],[],[]).
split([H|T], [H|Ntail], Odd, Even) :- H < 0, split(T, Ntail, Odd, Even).
split
([H
|T
], Neg
, [H
|Otail
], Even
) :- H
>= 0, ((H
rem 2)=:=1), split
(T
, Neg
, Otail
, Even
).split
([H
|T
], Neg
, Odd
, [H
|Etail
]) :- H
>= 0, ((H
rem 2)=:=0), split
(T
, Neg
, Odd
, Etail
).
program
:- split
([1,2,3,4,-5,-6,7,-8,9,10], X
, Y
, Z
), write(X
), write(Y
), write(Z
), nl.
c3BsaXQoW10sW10sW10sW10pLgpzcGxpdChbSHxUXSwgW0h8TnRhaWxdLCBPZGQsIEV2ZW4pIDotIEggPCAwLCBzcGxpdChULCBOdGFpbCwgT2RkLCBFdmVuKS4Kc3BsaXQoW0h8VF0sIE5lZywgW0h8T3RhaWxdLCBFdmVuKSA6LSBIID49IDAsICgoSCByZW0gMik9Oj0xKSwgc3BsaXQoVCwgTmVnLCBPdGFpbCwgRXZlbikuCnNwbGl0KFtIfFRdLCBOZWcsIE9kZCwgW0h8RXRhaWxdKSA6LSBIID49IDAsICgoSCByZW0gMik9Oj0wKSwgc3BsaXQoVCwgTmVnLCBPZGQsIEV0YWlsKS4KCnByb2dyYW0gOi0gc3BsaXQoWzEsMiwzLDQsLTUsLTYsNywtOCw5LDEwXSwgWCwgWSwgWiksIHdyaXRlKFgpLCB3cml0ZShZKSwgd3JpdGUoWiksIG5sLgo=