【问题标题】:Prolog exercise with Lists使用列表进行 Prolog 练习
【发布时间】:2016-12-03 13:56:57
【问题描述】:

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

如果我有序言谓词**split_list(Limit,List,High,Low) (split_list/4)** 它有一个整数列表List和一个整数Limit,“返回”到列表 High列表List的所有大于或等于Limit的数据并且 列表 Low 哪些数据小于 Limit。例如: ?- split_list(2, [0, 2, 1, 3, 4], High, Low). High = [2, 3, 4] Low = [0, 1]

i) 给出不太可能的谓词的回溯定义 控件。

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

【问题讨论】:

  • 请向我们展示您到目前为止所做的尝试。

标签: list prolog definition backtracking


【解决方案1】:

您可以使用以下谓词列表来实现这一点。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多