首页 文章

使用列表进行Prolog练习

提问于
浏览
-3

如果有人帮助我进行下面的练习,我将不胜感激

如果我有prolog谓词 **split_list(Limit,List,High,Low) (split_list/4)** ,它有一个整数列表 List ,和一个整数 Limit ,"returns"列出 High 列表List的所有数据大于或等于 Limit ,列表Low低于 Limit 的数据 . 例如: ?- split_list(2, [0, 2, 1, 3, 4], High, Low). High = [2, 3, 4] Low = [0, 1]

i)用 less possible controls. 给出谓词的 backtracking definition

ii)定义谓词 split_list_alt/3 ,具有[i)的相同声明含义](非递归定义)//注释:使用谓词集合解决方案(非回溯)例如: ?- split_list(0, [0, 2, 1, 3, 4], High, Low). High = [0, 2, 1, 3, 4] Low = [] Yes

1 回答

  • 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).
    

相关问题