2016-12-03 62 views
-3

我將不勝感激,如果有人幫我下鍛鍊Prolog的行使列表

如果我有序言謂語**split_list(Limit,List,High,Low) (split_list/4)** 它有一個整數列表列表,和一個整數限制,「返回」列出 所有名單列表的數據較少的限制這是大於或等於限制和 列表中低數據。例如: ?- split_list(2, [0, 2, 1, 3, 4], High, Low). High = [2, 3, 4] Low = [0, 1]

我)給謂詞的回溯定義不太可能 控制。

ⅱ)定義謂詞split_list_alt/3與[I)](非遞歸定義的相同含義聲明) //註釋:使用謂詞采集解決方案(非回溯)例如: ?- split_list(0, [0, 2, 1, 3, 4], High, Low). High = [0, 2, 1, 3, 4] Low = [] Yes

+0

請告訴我們你到目前爲止所嘗試過的。 –

回答

0

您可以使用以下謂詞列表來實現此目的。

split_list(_,[],[],[]):- 
    !. 

split_list(N,[LH|LT],[LH|AT],B):- 
    LH>=N,!, 
    split_list(N,LT,AT,B). 

split_list(N,[LH|LT],A,[LH|BT]):- 
    split_list(N,LT,A,BT).