【问题标题】:get the head of a sorted list in prolog在序言中获取排序列表的头部
【发布时间】:2017-12-30 18:56:27
【问题描述】:

我是新的 Prolog,我被困在这一点上。 我怎样才能得到这个排序列表的头部?

mylist(List,First) :-
   sort(List, Sorted),
   mylist(Sorted,First).
   mylist([H|_],H).

【问题讨论】:

    标签: list sorting prolog head


    【解决方案1】:

    [First|_]统一排序列表

    mylist(List,First) :-
        sort(List,[First|_]).

    所以现在Prolog会将sort/2的右操作数与[First|_]统一起来。这意味着如果您使用mylist([1,4,2,5],F) 调用,Prolog 将调用sort([1,4,2,5],[F|_])。现在Prolog会将列表排序为[1,2,4,5]并统一[1,2,4,5] = [F|_]。自[1,2,4,5] = [1|[2,4,5]] 以来成功。所以F = 1,通配符是[2,4,5]

    请注意,只有当sort/1 的第二个参数是包含至少一个元素的列表时,谓词才会成功。

    您还可以使用该First 进行进一步处理。如果您需要对排序列表及其头部的引用,您可以使用:

    mylist(List,First) :-
        sort(List,Sorted),
        Sorted = [First|_],
        %% further processing with Sorted and First.

    【讨论】:

      猜你喜欢
      • 2022-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 2017-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多