Guest User

Untitled

a guest
Apr 9th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 1.42 KB | None | 0 0
  1. wst(s,t):-!.    %jesli term wejsciowy jest s to wyjsciowy ma byc t
  2. wst(T1, T2):-       %jezeli jest to term zlozony to chcemy ujawnic jego argumenty
  3.     T1=..[F|Args],!,
  4.     lwst(Args,Args1),    %na liscie zastap s na t
  5.     T2=..[F|Args1].
  6. wst(T,T). %domykajaca klauzula ktorej term pozostaje bez zmian
  7.  
  8. lwst([],[]). %lista zmienionych tez bedzie listą pustą
  9. lwst([H|T],[H1|T1]):- % dla tego musi zajsc warunek wst miedzy H a H1 bo wst jest zdefiniowane dla pojedynczego termu
  10.     wst(H,H1),
  11.     lwst(T,T1).
  12.  
  13. in2pre(T1,T2):-
  14.     T1 =..[F,A,B],!,
  15.     in2pre(A,A1),% zamien pierwszy arg
  16.     in2pre(B,B1),%podobnie zmodyfukuj  drugi arg
  17.     T2=[F,A1,B1].
  18. in2pre(T,T).
  19.  
  20. in2pre2(T1,T2):-
  21.     T1 =..[F,A,B],!,
  22.     in2pre2(A,A1), % zamien pierwszy arg
  23.     in2pre2(B,B1), %podobnie zmodyfukuj  drugi arg
  24.    
  25.     append([F|A1],B1,T2).
  26. in2pre2(T,[T]).
  27.  
  28.  
  29. exp(E):-
  30.     number(E),!.
  31. exp(+E):-
  32.     exp(E).
  33. exp(-E):-
  34.     exp(E).
  35. exp(E1+E2):-
  36.     exp(E1),
  37.     exp(E2).
  38. exp(E1-E2):-
  39.     exp(E1),%jesli poprawne jest wyrazenie pierwsze i drugie
  40.     exp(E2).
  41.  
  42. exp(E1*E2):-
  43.     exp(E1),
  44.     exp(E2).
  45.  
  46. exp(E1/E2):-
  47.     exp(E1),
  48.     exp(E2).
  49. %nasz program na razie akceptuje takie wyrazenia
  50. % 1(0|11)*0(10|01)+1
  51.  
  52. acc([1|T]):-
  53.     acc1(T). %warunki dla ogona, najprostsza postac bez powtorzen
  54. acc1([0|T]):-
  55.     acc2(T).
  56. acc1([0|T]):-   %zero i dalej ogon akceptowany przez acc1
  57.     acc1(T).
  58. acc1([1,1|T]):-
  59.     acc1(T).
  60. acc2([1,0,1]).
  61. acc2([0,1,1]).
  62. acc2([1,0|T]):-
  63.     acc2(T).
  64. acc2([0,1|T]):-
  65.     acc2(T).
Add Comment
Please, Sign In to add comment