限定的关系的xyz(X),其为真,如果X为XYZ序列。 甲XYZ序列是由任一数字0,或者随后两个其他XYZ序列编号1的序列。
有些XYZ序列:
xyz([0]).
xyz([1,0,1,0,0]).
而且,以下不属于XYZ序列:
xyz([1,1,0,0]).
xyz([0,1,0]).
xyz([1,1,0]).
xyz([1,0,1,1,1,1,1,0,1]).
有人可以帮我如何处理这个问题呢?
限定的关系的xyz(X),其为真,如果X为XYZ序列。 甲XYZ序列是由任一数字0,或者随后两个其他XYZ序列编号1的序列。
有些XYZ序列:
xyz([0]).
xyz([1,0,1,0,0]).
而且,以下不属于XYZ序列:
xyz([1,1,0,0]).
xyz([0,1,0]).
xyz([1,1,0]).
xyz([1,0,1,1,1,1,1,0,1]).
有人可以帮我如何处理这个问题呢?
最简单的是写一个DCG。 请参见本教程的深入的介绍。 你可以从字面上写下问题声明逐字得到一个解决方案:
xyz --> [0].
xyz --> [1], xyz, xyz.
您将需要phrase
:
?- phrase(xyz, [1,0,1,0,0]).
该解决方案留下一个选择点之后。
这种简单的语法是理想了解机构(虽然简化),该功率DCG中:
seq(S) :- seq(S, []).
seq([0|R], R).
seq([1|T], R) :- seq(T, Q), seq(Q, R).