-1

对于仅包含 0 和 1 的列表,需要找出 [0, 1] 的每次出现是否(不一定立即)紧跟 [1, 0, 0] 的出现。怎么做?

4

1 回答 1

1

您可以使用内置函数和 Prolog 的搜索功能,而不是定义自动机。

append/3 在 3 个列表之间建立关系。即,第三个列表是前两个列表的串联。这可用于轻松回答您的作业:

satisfy(L) :- append(_, [0,1|R], L), append(_, [1,0,0|_], R).

如您所见,append(_, PatternAndRest, L) 搜索L 中的模式并产生其余的。

但是您可能需要编写一个递归谓词来扫描列表以查找模式。我希望您可以在 meet/1 中看到的语法对您有所帮助。

于 2013-07-04T21:33:03.497 回答