【问题标题】:List finding in a list of lists in Prolog在 Prolog 中的列表列表中查找列表
【发布时间】:2017-03-26 10:22:44
【问题描述】:

我想在 prolog 中的列表列表中找到一个特定列表,假设该列表是:

L[L1,L2,L3......]

L 中的每个列表都采用以下格式:

L1[A,B,C,D]

我想找一个A最小的Ln,我该怎么做?

【问题讨论】:

    标签: list sorting search prolog find


    【解决方案1】:

    基本情况是具有单个元素的列表(列表):

    find([X],X).
    

    然后,递归地,你可以比较头部的列表和尾部的最小列表:

    find([[X|Xs]|T],[X|Xs]) :- find(T,[Y|_]), X =< Y.
    find([[X|_]|T],[Y|Ys]) :- find(T,[Y|Ys]), X > Y.
    

    或更高效:

    find([[X|Xs]|T],L) :- find(T,[Y|Ys]), (X =< Y, L = [X|Xs] ; X > Y, L = [Y|Ys]).
    

    例如:

    ?- find([[3,1,4,3],[1,1,2,4],[2,4,3,1]],X).
    X = [1, 1, 2, 4] ;
    

    【讨论】:

      猜你喜欢
      • 2016-07-18
      • 1970-01-01
      • 1970-01-01
      • 2014-02-26
      • 2011-08-17
      • 2017-11-27
      • 1970-01-01
      • 2015-02-24
      • 2013-11-16
      相关资源
      最近更新 更多