Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DOMAINS
- IntList = integer*
- IntLists = IntList*
- PREDICATES
- max(integer, integer, integer)
- maxElement(IntList, integer)
- maxWithIdx(integer, integer, integer, integer, integer, integer)
- maxMaxIdx(IntLists, integer, integer, integer)
- maxMaxInList(IntLists, integer, integer)
- GOAL
- clearwindow,
- maxMaxInList([[2, 3, 1], [5, 4, 3, 1, 0], [1, 2, 7], [6, 1], [3, 2, 0]], Idx, Maximum),
- write(Maximum),
- nl,
- write(Idx).
- CLAUSES
- max(X, Y, X) :-
- X > Y,!.
- max(_, Y, Y).
- maxElement([], -32768) :- !.
- maxElement([Head|Tail], MaxEl) :-
- maxElement(Tail, TailMax),
- max(Head, TailMax, MaxEl).
- maxWithIdx(A, AIdx, B, _, A, AIdx) :-
- A > B,!.
- maxWithIdx(_, _, B, BIdx, B, BIdx).
- maxMaxIdx([], _, -32768, -1) :- !.
- maxMaxIdx([Head|Tail], Idx, CurrMax, CurrIdx) :-
- NextIdx = Idx + 1,
- maxMaxIdx(Tail, NextIdx, TailMax, TailMaxIdx),
- maxElement(Head, HeadMax),
- maxWithIdx(HeadMax, Idx, TailMax, TailMaxIdx, CurrMax, CurrIdx).
- maxMaxInList(List, Idx, Maximum) :-
- maxMaxIdx(List, 0, Maximum, Idx).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement