Zer*_*ero 3 prolog dcg
我阻止了Prolog 中代码的谓词。我需要编码这两个谓词:
如果我打电话:u([a,b,c,d,e,f], X).它会给X=[a,b], X=[b,c], X=[c,d]...
u([a,b,c,d,e,f], X).
X=[a,b], X=[b,c], X=[c,d]
如果我打电话:v([a,b,c,d,e,f], X).它会给X=[a,b], X=[c,d], X=[e,f]...
v([a,b,c,d,e,f], X).
X=[a,b], X=[c,d], X=[e,f]
非常感谢!
Tud*_*riu 5
虽然false的答案更优雅,但这里有一个更适合初学者的谓词解决方案u/2。
u/2
u([X,Y|_], [X,Y]). u([_|Tail], XY):- u(Tail,XY).
第一条规则表示,[X,Y]如果它们是列表中的前两个元素,则表示列表中的两个连续元素。
[X,Y]
第二条规则规定,如果两个元素在列表尾部的某处是连续的,则它们在列表中是连续的。
现在尝试为 找到类似的解决方案v/2。
v/2
归档时间:
11 年,6 月 前
查看次数:
2087 次
最近记录:
7 年,5 月 前