如何在序言中将列表列表转换为单个列表

问题描述 投票:0回答:1

我想知道如何将如下所示的列表转换为:

[[a,b,c], [[b,c],[a,c],[a,b]]
,表示与第一个子列表中每个顶点相邻的顶点,转换为如下所示的列表:
[*adj*(a,[b,c]), *adj*(b,[a,c]), *adj*(c,[a,b])]

我想知道在这种情况下使用 maplist 是否有帮助,或者我是否可以使用列表操作来获取结果。

prolog
1个回答
0
投票

在我看来这行得通:

map([X,Y],L) :- map(X,Y,L).

map([],[],[]).
map([H1|T1],[H2|T2],[adj(H1,H2)|T3]) :- map(T1,T2,T3).

?- map([[a,b,c], [[b,c],[a,c],[a,b]]],X).

给出:

X = [foo(a, [b, c]), foo(b, [a, c]), foo(c, [a, b])].
© www.soinside.com 2019 - 2024. All rights reserved.