2011-03-31 81 views
1

我想要一個函數,它將採用兩個列表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(??? 

最後一項可能是錯誤的做法。我該怎麼做呢?

+0

現在想起來,'take_until'本來應該是名稱... – Koen 2011-03-31 13:40:29

回答

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). 
+0

第二個參數是有,因爲我需要修剪的名單答:我現在如何才能訪問它? – Koen 2011-03-31 13:50:59

+0

@Koen在這種情況下,就把它留在那裏吧。我將編輯我的答案以適應。 – 2011-03-31 13:57:15

相關問題