【发布时间】:2019-01-10 16:43:46
【问题描述】:
所以我代表这个 DFA:
像这样
initial(0).
final(2).
arc(0,a,1).
arc(0,b,0).
arc(1,a,1).
arc(1,b,2).
arc(2,a,2).
arc(2,b,2).
我有一个解析字符串的谓词,如果可以接受则返回 true:
transition(X,[A|B]) :- arc(X,A,T),transition(T,B).
transition(X,[]) :- final(X).
parse(X) :- initial(S),transition(S,X).
现在我想创建一个谓词check(X,Y),即获取一个列表并删除所有不是a 或b 的索引。 Y 将是一个不包含错误索引的新列表。
例如:
?-check([a,1,b,c,b],Y).
Y=[a,b,b];
false
我不喜欢 Prolog,我尝试了很多东西,但没有做我需要的。 你能给我一个如何制作检查谓词的指南吗?
【问题讨论】: