Splitting a list of integers into a list of positive integers and a list of negative integers

前端 未结 4 844
不知归路
不知归路 2020-11-29 13:12

I\'ve been trying to create a predicate in Prolog which splits a list of integers into a list of positive integers and into a list of negative integers.

Sample query

4条回答
  •  粉色の甜心
    2020-11-29 14:00

    The recursive part is not quite correct.

    split([], [], []).
    split([Head|Tail], [Head|List1], List2) :- Head>=0, split(Tail, List1, List2).
    split([Head|Tail], List1, [Head|List2]) :- Head<0, split(Tail, List1, List2).
    

    The Head should be added to the positive list if Head >= 0 and to the negative list when Head < 0.

    Moreover, checking the sign of Head at the beginning is better, because it will prevent unnecessary recursive calls.

提交回复
热议问题