我使用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 :(得分: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]]]
* /
答案 1 :(得分:0)
第一次尝试压得太深了一步。以下代码给出了预期的转换:
clean([]) --> [].
clean([Rec_Set|Tail]) --> rec_set(Rec_Set), clean(Tail), [].
rec_set([]) --> [].
rec_set([Record|Tail]) --> [Record], rec_set(Tail).