0
給出一個包含子列表[[1]。[2],[3]]的列表,我將如何檢查列表中第一個子列表的HEAD是否小於其他列表其他子列表的HEADS?檢查頭部內容是否小於尾部
給出一個包含子列表[[1]。[2],[3]]的列表,我將如何檢查列表中第一個子列表的HEAD是否小於其他列表其他子列表的HEADS?檢查頭部內容是否小於尾部
Comparison of Standard Order of Terms在ISO-Prolog中可遞歸地應用於任意複雜結構。
然後你的問題可以用一些可以解決像
first_head_is_less([H|R]) :- maplist(@<(H), R).
測試:
?- first_head_is_less([[1],[2],[3]]).
true.
?- first_head_is_less([[10],[2],[3]]).
false.
編輯上面的代碼一定要精,因爲它失敗(例如)在此:
?- first_head_is_less([[1,2],[1,3],[3]]).
true.
這是不正確的。這裏有一個更嚴格的測試:
first_head_is_less([H|R]) :-
maplist(head_is_less(H), R).
head_is_less([F|_], [E|_]) :- F @< E.
想想你可以用'map head'做什麼。 – 2013-04-20 01:23:10
@ChetterHummin我沒有嘗試太多。我不太清楚如何去做這件事。 – Drew 2013-04-20 01:37:24
幾乎所有你需要的功能都列在這個頁面上:http://hackage.haskell.org/packages/archive/base/latest/doc/html/Data-List.html想想你如何混合搭配他們。 – 2013-04-20 01:43:16