我想知道如何将如下所示的列表转换为:
[[a,b,c], [[b,c],[a,c],[a,b]]
,表示与第一个子列表中每个顶点相邻的顶点,转换为如下所示的列表:[*adj*(a,[b,c]), *adj*(b,[a,c]), *adj*(c,[a,b])]
我想知道在这种情况下使用 maplist 是否有帮助,或者我是否可以使用列表操作来获取结果。
在我看来这行得通:
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])].