2016-01-18 179 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).