从一个列表中获取元素并附加到其他列表

时间:2011-03-31 13:34:10

标签: prolog

我想要一个函数,它将采用两个列表A和B并返回列表Aout和Bout,这样从A开头到给定元素(比如原子'a')的元素已被删除并附加到B的结束,丢弃角色。我的尝试如下:

% usage: take_while(A, Aout, B, Bout)

take_while([], [], B, B).

take_while(['a'|As], As, B, B).

take_while([A|As], As, B, Bout) :-
        append(B, [A], Bout),
        %take_while(???

最后一句可能是错误的做法。我该怎么做?

1 个答案:

答案 0 :(得分:0)

看起来你需要简单地将对take_while的调用添加到最后一个子句:(实际上,我不确定为什么需要第二个参数,所以我将其从这个答案中删除)。

   take_while([], [], B, B).

   take_while(['a'|As], As, B, B).

   take_while([A|As], ARem, B, Bout) :-
           append(B, [A], BTemp), take_while(As, ARem, BTemp, Bout).