0
名單上有一個謂語:創建自謂
delta(q1,a,q2).
delta(q1,b,q3).
delta(q2,a,q4).
delta(q2,a,q3).
delta(q3,a,q1).
,我想將它們轉換爲列出這樣的:
nfatodfa([(q1,a,q2),(q1,b,q3),(q2,a,q4),(q2,a,q3),(q3,a,q1)],L)
我怎麼能這樣做?
名單上有一個謂語:創建自謂
delta(q1,a,q2).
delta(q1,b,q3).
delta(q2,a,q4).
delta(q2,a,q3).
delta(q3,a,q1).
,我想將它們轉換爲列出這樣的:
nfatodfa([(q1,a,q2),(q1,b,q3),(q2,a,q4),(q2,a,q3),(q3,a,q1)],L)
我怎麼能這樣做?
我想你可能想使用什麼的findall/3構造此列表:
?- findall(d(X,Y,Z), delta(X,Y,Z), L).
L = [d(q1,a,q2),d(q1,b,q3),d(q2,a,q4),d(q2,a,q3),d(q3,a,q1)]
注意,這使得使用仿函數d
裝東西,這是一個小複合詞的列表與你所概述的不同。然而單獨的括號,例如。 (q1,a,q2)
,可能有點棘手。如果您只想要裸三胞胎,請執行以下操作:
?- findall((X,Y,Z), delta(X,Y,Z), L).
L = [(q1,a,q2), (q1,b,q3), (q2,a,q4), (q2,a,q3), (q3,a,q1)]