List 从结果列表中排除整数的Prolog程序
我需要将一个列表拆分为一个大于N的列表和一个较小的列表,同时忽略任何非整数。它工作得很好,只是当我包含非整数时会抛出异常。有人能看出我做错了什么吗List 从结果列表中排除整数的Prolog程序,list,prolog,List,Prolog,我需要将一个列表拆分为一个大于N的列表和一个较小的列表,同时忽略任何非整数。它工作得很好,只是当我包含非整数时会抛出异常。有人能看出我做错了什么吗 split([],N, [],[]). split([HeadOrig | TailOrig], N, L1, TailOrig):- \+ integer(HeadOrig), split(TailOrig, N, L1, TailOrig). split([HeadOrig|TailOrig],N, [HeadOrig|Tai
split([],N, [],[]).
split([HeadOrig | TailOrig], N, L1, TailOrig):-
\+ integer(HeadOrig),
split(TailOrig, N, L1, TailOrig).
split([HeadOrig|TailOrig],N, [HeadOrig|Tail1],L2):-
integer(HeadOrig), HeadOrig >= N,
!,
split(TailOrig, N, Tail1, L2).
split([HeadOrig | TailOrig], N, L1, [HeadOrig | Tail2]) :-
integer(HeadOrig), HeadOrig < N,
!,
split(TailOrig, N, L1, Tail2).
split([],N,[],[])。
拆分([首端|尾端]、N、L1、尾端):-
\+整数(标题),
拆分(尾轴,N,L1,尾轴)。
拆分([HeadOrig | TailOrig],N[HeadOrig | Tail1],L2):-
整数(HeadOrig),HeadOrig>=N,
!,
拆分(尾轴,N,尾轴1,L2)。
拆分([HeadOrig | TailOrig],N,L1[HeadOrig | Tail2]):
整数(HeadOrig),HeadOrig
问题是该条款中的最后一个术语不应是TailOrig
:
split([], _, [],[]).
split([HeadOrig | TailOrig], N, L1, L2):-
\+ integer(HeadOrig),
split(TailOrig, N, L1, L2),
!.
split([HeadOrig|TailOrig], N, [HeadOrig|Tail1], L2):-
integer(HeadOrig), HeadOrig >= N,
!,
split(TailOrig, N, Tail1, L2).
split([HeadOrig | TailOrig], N, L1, [HeadOrig | Tail2]) :-
integer(HeadOrig), HeadOrig < N,
!,
split(TailOrig, N, L1, Tail2).
split([],[uu],[],[])。
拆分([首端|尾端]、N、L1、L2):-
\+整数(标题),
分体式(尾翼,N,L1,L2),
!.
拆分([HeadOrig | TailOrig],N[HeadOrig | Tail1],L2):-
整数(HeadOrig),HeadOrig>=N,
!,
拆分(尾轴,N,尾轴1,L2)。
拆分([HeadOrig | TailOrig],N,L1[HeadOrig | Tail2]):-
整数(HeadOrig),HeadOrig
好的,我现在看到了(编辑了上面的原始代码),但如果我给它一个带字母的列表,它现在只返回'false',例如:[1,2,'a']。不再出现错误,但现在不会继续拆分