如何在prolog中选择另一个子列表后的子列表

时间:2013-07-04 21:20:07

标签: list prolog automata

如果列表仅包含0和1,则需要通过[1,0,0]的出现来确定是否每次出现[0,1](不一定是立即)。怎么做?

1 个答案:

答案 0 :(得分:1)

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

追加/ 3建立3个列表之间的关系。即,第三个列表是前两个的串联。这可以用来轻松回答你的任务:

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

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

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