【发布时间】:2016-05-15 14:05:29
【问题描述】:
所以我试图在 prolog 中创建一个方法来获取一个字符和 2 个列表,无论在列表 1 中找到该字符的任何位置,我都会将该字符注入到列表 2 中。该方法返回的新状态清单 2. 即使我认为它是正确的,它似乎也不起作用。这是我的代码。
transfer([],[],_,[])
transfer([H¦T],[_¦T1],C,R):-
transfer(T,T1,C,R1),
H==C,
append([H],R1,R).
如果我执行 ?- transfer([h,e,l,l,o],[0,0,0,0,0],e,X)。我会得到 X=[0,e,0,0,0] 的结果。有什么想法吗?
【问题讨论】:
-
一些想法:(1)
[H,T]和[_,T1]是仅包含两个元素的列表。因此,您的谓词不能与空列表或具有 2 个元素的列表以外的参数一起使用。您需要检查列表语法。 (2)append([H], R1, R)可以替换为R = [H|R1]。 (3) 您正在使用匿名变量_来表示您在解决方案中实际上可能关心的列表元素。所以应该是“不在乎”。