esterfarbstein

Untitled

Dec 9th, 2018
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 0.70 KB | None | 0 0
  1. simplify2(end):-!.
  2. simplify2(Exp+X):-
  3.     write('Exp+X'),write(Exp),write('+'),write(X),nl,
  4.     (  (retract(vv(X/N)),!,
  5.         N1 is N+1,
  6.         assert(vv(X/N1)))
  7.     ;
  8.         (   assert(vv(X/1)),write('@'))
  9.     ),
  10.  
  11.     simplify2(Exp).
  12. simplify2(X):-
  13.     write('X'),write(X),nl,
  14.     atomic(X),
  15.     simplify2(end+X).
  16.  
  17.  
  18. list_to_output([C/N|List],Sum,Out):-
  19.     list_to_output(List,Sum1,Out1),
  20.     (   atom(C),
  21.         N>1,!,
  22.         Out=Out1+C*N,
  23.         Sum = Sum1
  24.     ;   atom(C),!,
  25.         Out=Out1+C,
  26.         Sum = Sum1
  27.     ;   integer(C),
  28.         Sum is Sum1+(C*N),
  29.         Out = Out1
  30.     ).
  31. list_to_output([],0,'').
  32.  
  33. simplify(Expression,Out1):-
  34.     simplify2(Expression),
  35.     findall(C/N,vv(C/N),List),
  36.     list_to_output(List,Sum,Out),
  37.     Out1 =Out+Sum.
Add Comment
Please, Sign In to add comment