Advertisement
Guest User

Untitled

a guest
Nov 5th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. DOMAINS
  2. IntList = integer*
  3. IntLists = IntList*
  4.  
  5. PREDICATES
  6. max(integer, integer, integer)
  7. maxElement(IntList, integer)
  8. maxWithIdx(integer, integer, integer, integer, integer, integer)
  9. maxMaxIdx(IntLists, integer, integer, integer)
  10. maxMaxInList(IntLists, integer, integer)
  11.    
  12. GOAL
  13. clearwindow,
  14. maxMaxInList([[2, 3, 1], [5, 4, 3, 1, 0], [1, 2, 7], [6, 1], [3, 2, 0]], Idx, Maximum),
  15. write(Maximum),
  16. nl,
  17. write(Idx).
  18.  
  19. CLAUSES
  20. max(X, Y, X) :-
  21.     X > Y,!.
  22. max(_, Y, Y).
  23.  
  24. maxElement([], -32768) :- !.
  25. maxElement([Head|Tail], MaxEl) :-
  26.     maxElement(Tail, TailMax),
  27.     max(Head, TailMax, MaxEl).
  28.    
  29. maxWithIdx(A, AIdx, B, _, A, AIdx) :-
  30.     A > B,!.
  31. maxWithIdx(_, _, B, BIdx, B, BIdx).
  32.    
  33. maxMaxIdx([], _, -32768, -1) :- !.
  34. maxMaxIdx([Head|Tail], Idx, CurrMax, CurrIdx) :-
  35.     NextIdx = Idx + 1,
  36.     maxMaxIdx(Tail, NextIdx, TailMax, TailMaxIdx),
  37.     maxElement(Head, HeadMax),
  38.     maxWithIdx(HeadMax, Idx, TailMax, TailMaxIdx, CurrMax, CurrIdx).
  39.  
  40. maxMaxInList(List, Idx, Maximum) :-
  41.     maxMaxIdx(List, 0, Maximum, Idx).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement