用于解压缩列表的序言谓词
Prolog predicate to unzip lists
我写了一个序言谓词 my_unzip/2 可以解压任何大小的列表。我似乎无法获得正确的输出,而且我是 prolog 的新手。
my_unzip([], [[],[]]).
my_unzip([X], [[X], []]).
my_unzip([F, S | T], [[F|TS], [S|TF]]) :- my_unzip(T, [TS, TF]).
示例:
my_unzip(X,[[a,b],[c,d]]).
应该return
X = [[a,c],[b,d]]
但我得到了
X = [a, c, b, d]
my_unzip([ F, S | T], [[F|TS], [S|TF]]) :- my_unzip(T, [TS, TF]).
给你
X = [ a, c , .......
但你想要
X = [ [a, c], .......
因此,相应地,所需的更改是
my_unzip([ …F, S…| T], ......
(您需要进行相应的更改,将 …
替换为实际的句法元素)。
我写了一个序言谓词 my_unzip/2 可以解压任何大小的列表。我似乎无法获得正确的输出,而且我是 prolog 的新手。
my_unzip([], [[],[]]).
my_unzip([X], [[X], []]).
my_unzip([F, S | T], [[F|TS], [S|TF]]) :- my_unzip(T, [TS, TF]).
示例:
my_unzip(X,[[a,b],[c,d]]).
应该return
X = [[a,c],[b,d]]
但我得到了
X = [a, c, b, d]
my_unzip([ F, S | T], [[F|TS], [S|TF]]) :- my_unzip(T, [TS, TF]).
给你
X = [ a, c , .......
但你想要
X = [ [a, c], .......
因此,相应地,所需的更改是
my_unzip([ …F, S…| T], ......
(您需要进行相应的更改,将 …
替换为实际的句法元素)。