Advertisement
elvecent

Prolog2

Sep 19th, 2016
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 1.46 KB | None | 0 0
  1. % 1
  2. fst([H|_],H).
  3.  
  4. snd([_, S|_],S).
  5.  
  6. % 2
  7. rev(Lst1,Lst2) :- revHelper(Lst1,Lst2,[]).
  8.  
  9. revHelper(Lst1,[],Lst1) :- !.
  10. revHelper(Lst1,[H|T],Lst3) :-
  11.     revHelper(Lst1,T,[H|Lst3]).
  12.  
  13. % 3
  14. sym(Lst) :- rev(Lst,Lst).
  15.  
  16. % 4
  17. odd(N) :- 0 =\= N mod 2.
  18.  
  19. prime(2).
  20. prime(N) :-
  21.     N>1,
  22.     odd(N),
  23.     checkPrime(3,N).
  24.  
  25. checkPrime(A,N) :-
  26.     AA is A*A, AA>N;
  27.     0 =\= N mod A,
  28.     A2 is A+2,
  29.     checkPrime(A2,N).
  30.  
  31. unprime(A) :- \+ prime(A).
  32.  
  33. primeList([],[]).
  34. primeList([H|T],[PH|PT]) :-
  35.     prime(H),
  36.     H = PH,
  37.     primeList(T,PT).
  38. primeList([H|T],PLst) :-
  39.     unprime(H),
  40.     primeList(T,PLst),!.
  41.  
  42. % 5
  43. pref([],_).
  44. pref([H|T1],[H|T2]) :-
  45.     pref(T1,T2).
  46.  
  47. sublst(Lst1,Lst2) :- pref(Lst1,Lst2), !.
  48. sublst(Lst1,[_|T]) :- sublst(Lst1,T).
  49.  
  50. % 6
  51. merge(Lst3,[],Lst3).
  52. merge([],Lst3,Lst3).
  53. merge([H|T1],[H|T2],[H,H|T3]) :- merge(T1,T2,T3), !.
  54. merge([H|T1],Lst2,[H|T3]) :-
  55.     Lst2 = [H2|_],
  56.     H<H2,
  57.     merge(T1,Lst2,T3).
  58. merge(Lst1,[H|T2],[H|T3]) :-
  59.     Lst1 = [H1|_],
  60.     H1>H,
  61.     merge(Lst1,T2,T3).
  62.  
  63. % 7
  64. numlst(A,B) :- var(A), var(B), A = 1, B = [1].
  65. numlst(N,Lst) :-
  66.     var(Lst),
  67.     numlstHelper(N,RLst),
  68.     reverse(Lst,RLst).
  69. numlst(N,Lst) :- reverse(Lst,RLst), numlstHelper(N,RLst).
  70.  
  71. numlstHelper(N,RLst) :- var(RLst), N<10, RLst = [N|[]].
  72. numlstHelper(N,RLst) :-
  73.     var(RLst),
  74.     N10 is N mod 10,
  75.     RLst = [N10|T],
  76.     NN is N div 10,
  77.     numlstHelper(NN,T).
  78. numlstHelper(N,[H|[]]) :- N<10, N is H.
  79. numlstHelper(N,[H|T]) :-
  80.     H is N mod 10,
  81.     NN is N div 10,
  82.     numlstHelper(NN,T).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement