2016-01-18 183 views
0

我使用maplist(getEdgeInfo(Q_From_To),Edges,Edge_Info0)来收集图中边缘的所有信息。 getEdgeInfo(Q_From_To)返回时,还会返回一个列表边缘的列表,每个列表中的信息,所以我结束了以下Edge_Info0:如何拼合一个嵌套列表?

[ [[4,4,"n.v.t.",3,"n.v.t.",3,5,5,2]], 
    [[5,5,"n.v.t.",3,"n.v.t.",3,12,12,2],[5,5,"n.v.t.",3,"n.v.t.",3,12,12,1]], 
    [[5,5,"n.v.t.",3,"1.0",3,56,56,2]], 
    --- 
] 

我需要的是在下面的格式相同的数据:

[ [4,4,"n.v.t.",3,"n.v.t.",3,5,5,2], 
    [5,5,"n.v.t.",3,"n.v.t.",3,12,12,2], 
    [5,5,"n.v.t.",3,"n.v.t.",3,12,12,1], 
    [5,5,"n.v.t.",3,"1.0",3,56,56,2], 
    --- 
] 

这样做的最佳方法是什么?我应该使用DCG吗? (我对DCG没有任何经验)。

回答

0

我结束了这一点。希望这将与'真正'的数据一起工作。

clean([]) --> []. 
clean([Q_Set|Tail]) --> q_set(Q_Set), clean(Tail), []. 

q_set([]) --> []. 
q_set([Rec_Set|Tail]) --> rec_set(Rec_Set), q_set(Tail). 

rec_set([]) --> []. 
rec_set([Record|Tail]) --> [Record], rec_set(Tail). 

?- X = [[[a]], [[b],[c]], [[d]]], phrase(clean(X), List). 
List = [a, b, c, d], 
X = [[[a]], [[b], [c]], [[d]]] 

*/

0

第一次尝试扁平一步太深。以下代码给出了预期的转换:

clean([]) --> []. 
clean([Rec_Set|Tail]) --> rec_set(Rec_Set), clean(Tail), []. 

rec_set([]) --> []. 
rec_set([Record|Tail]) --> [Record], rec_set(Tail).