【发布时间】:2021-09-16 23:08:23
【问题描述】:
我正在尝试学习 Prolog,但无法定义谓词:
在 Prolog 中定义一个谓词替换 (L1, X, L2),列表 L1 的每个第二个元素(从第二个元素开始)用元素 X 替换。
例子:
L1 = [a, b, c], X = 1, L2 = [a, 1, c]
L1 = [a, b, c, d], X = a, L2 = [a, a, c, a]
我试过这样:
replace( [], _, [] ) :- ! .
replace( [X|Xs], T, [Z1,Z2|Zs] ):-
Z1 = X ,
Z2 = T ,
replace(Xs,T,Zs).
但它会将项目添加到第二个列表中,而不是替换它们。 提前感谢您的帮助。
【问题讨论】:
-
您也必须从第一个列表中取出 2 个项目。第二项可以忽略(使用匿名变量
_)。当L1中的项目数为奇数时,您可能还需要添加另一个基本情况。 -
您也可以在适当的地方使用相同的变量。因此,不要将
Z1与X统一起来,只需在两个地方使用相同的变量X。T和Z2也是如此。 -
你可能会摆脱切割
!,因为它在你的程序中不需要
标签: prolog