0
我想找到在序言中列出的清單內的具體列表,假設名單是:列表中查找在列表的列表中的Prolog
L[L1,L2,L3......]
內大號每個列表的格式爲:
L1[A,B,C,D]
我想找到一個最小的A,我該怎麼做?
我想找到在序言中列出的清單內的具體列表,假設名單是:列表中查找在列表的列表中的Prolog
L[L1,L2,L3......]
內大號每個列表的格式爲:
L1[A,B,C,D]
我想找到一個最小的A,我該怎麼做?
基礎案例是具有單個元件(列表)的列表:
find([[X|Xs]|T],[X|Xs]) :- find(T,[Y|_]), X =< Y.
find([[X|_]|T],[Y|Ys]) :- find(T,[Y|Ys]), X > Y.
:
find([X],X).
然後,遞歸地,可以在頭部的列表與所述尾部的最小列表進行比較
或更有效地:
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] ;