Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 3.50 KB | None | 0 0
  1. my_append([], L, L).
  2. my_append([H|T], L, [H|NewT]) :-
  3.     my_append(T, L, NewT).
  4.  
  5. my_reverse(L, R) :-
  6.     my_reverse_helper(L, R, []).
  7.  
  8. my_reverse_helper([], R, R).
  9. my_reverse_helper([H|T], R, Acc) :-
  10.     my_reverse_helper(T, R, [H|Acc]).
  11.  
  12. my_length([], 0).
  13. my_length([_|T], Y) :-
  14.     my_length(T, N),
  15.     Y is N+1.
  16.  
  17. my_member(H, [H|_]).
  18. my_member(_, []) :-
  19.     false.
  20. my_member(V, [_|T]) :-
  21.     my_member(V, T).
  22.  
  23. my_subset(Relation, L, Y) :-
  24.     my_subset_helper(Relation, L, Y, []).
  25. my_subset_helper(_, [], Y, Acc) :-
  26.     my_reverse(Acc, Y).
  27. my_subset_helper(Relation, [H|T], Y, Acc) :-
  28.     Temp=[H],
  29.     Term=..[Relation|Temp],
  30.     Term,
  31.     my_subset_helper(Relation, T, Y, [H|Acc]).
  32. my_subset_helper(Relation, [_|T], Y, Acc) :-
  33.     my_subset_helper(Relation, T, Y, Acc).
  34.  
  35. my_intersect([], _, []).
  36. my_intersect([H1|T1], Right, [H1|RT]) :-
  37.     my_member(H1, Right),
  38.     my_intersect(T1, Right, RT).
  39. my_intersect([_|T1], Right, R) :-
  40.     my_intersect(T1, Right, R).
  41.  
  42. compute_change(Value, Q, D, N, P) :-
  43.     compute_change_helper(Value,
  44.                           Q,
  45.                           D,
  46.                           N,
  47.                           P,
  48.                           0,
  49.                           0,
  50.                           0,
  51.                           0).
  52. compute_change_helper(0, Q, D, N, P, Q, D, N, P).
  53. compute_change_helper(Value, Q, D, N, P, QAcc, DAcc, NAcc, PAcc) :-
  54.     (   Value>=25
  55.     ->  NextValue is Value-25,
  56.         NextQ is QAcc+1,
  57.         compute_change_helper(NextValue,
  58.                               Q,
  59.                               D,
  60.                               N,
  61.                               P,
  62.                               NextQ,
  63.                               DAcc,
  64.                               NAcc,
  65.                               PAcc)
  66.     ;   Value>=10
  67.     ->  NextValue is Value-10,
  68.         NextD is DAcc+1,
  69.         compute_change_helper(NextValue,
  70.                               Q,
  71.                               D,
  72.                               N,
  73.                               P,
  74.                               QAcc,
  75.                               NextD,
  76.                               NAcc,
  77.                               PAcc)
  78.     ;   Value>=5
  79.     ->  NextValue is Value-5,
  80.         NextN is NAcc+1,
  81.         compute_change_helper(NextValue,
  82.                               Q,
  83.                               D,
  84.                               N,
  85.                               P,
  86.                               QAcc,
  87.                               DAcc,
  88.                               NextN,
  89.                               PAcc)
  90.     ;   Value>=1
  91.     ->  NextValue is Value-1,
  92.         NextP is PAcc+1,
  93.         compute_change_helper(NextValue,
  94.                               Q,
  95.                               D,
  96.                               N,
  97.                               P,
  98.                               QAcc,
  99.                               DAcc,
  100.                               NAcc,
  101.                               NextP)
  102.     ;   compute_change_helper(Value,
  103.                               Q,
  104.                               D,
  105.                               N,
  106.                               P,
  107.                               QAcc,
  108.                               DAcc,
  109.                               NAcc,
  110.                               PAcc)
  111.     ).
  112.  
  113. compose(L, [], L).
  114. compose([], L, L).
  115. compose([H1|T1], [H2|T2], [H1, H2|RT]) :-
  116.     compose(T1, T2, RT).
  117.  
  118. palindrome(L, R) :-
  119.     my_reverse(L, Reversed),
  120.     my_append(L, Reversed, R).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement