Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Prolog中的列表拆分_Prolog_Swi Prolog - Fatal编程技术网

Prolog中的列表拆分

Prolog中的列表拆分,prolog,swi-prolog,Prolog,Swi Prolog,在Prolog中获取错误。 我希望第一个列表中的正数可以被2整除,第二个列表中的负数可以被3整除。 这是我到目前为止编写的代码,但我得到的输出为“false” split([],[],[]). split([X|L],[X|L1],L2):- X >=0, X mod 2 =:= 0, split(L,L1,L2). split([X|L],L1,[X|L2]):- X<0, X mod 3 =:= 0, split(L,L1,L2). split([]、[]、[])。 拆分

在Prolog中获取错误。 我希望第一个列表中的正数可以被2整除,第二个列表中的负数可以被3整除。 这是我到目前为止编写的代码,但我得到的输出为“false”

split([],[],[]).

split([X|L],[X|L1],L2):- X >=0, X mod 2 =:= 0, split(L,L1,L2).

split([X|L],L1,[X|L2]):-  X<0, X mod 3 =:= 0, split(L,L1,L2).
split([]、[]、[])。
拆分([X | L],[X | L1],L2):-X>=0,X模2=:=0,拆分(L,L1,L2)。

split([X | L],L1[X | L2]):-X您没有为值指定一个子句,这些值不是正的,可以被二除,或者是负的,可以被三除。在这种情况下,您可能不想将其包括在任何列表中,因此:

split([],[],[]).
split([X|L],[X|L1],L2):-
    X >= 0,
    X mod 2 =:= 0,
    split(L,L1,L2).
split([X|L],L1,[X|L2]):-
    X < 0,
    X mod 3 =:= 0,
    split(L,L1,L2).
split([X|L], L1, L2) :-
    \+ ((X >= 0, X mod 2 =:= 0);  (X < 0, X mod 3 =:= 0)),
    split(L, L1, L2).
split([]、[]、[])。
拆分([X | L]、[X | L1]、L2):-
X>=0,
X模2=:=0,
拆分(L、L1、L2)。
拆分([X|L],L1[X|L2]):-
X<0,
X mod 3=:=0,
拆分(L、L1、L2)。
拆分([X | L],L1,L2):-
\+((X>=0,X模2=:=0);(X<0,X模3=:=0)),

split(L、L1、L2)。
您没有为非正的值指定一个子句,这些值不能被二除,也不能被三除。