Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % This buffer is for notes you don't want to save.
- % If you want to create a file, visit that file with C-x C-f,
- % then enter the text in that file's own buffer.
- %tree(5, tree(3, tree(1, null, null), tree(4, null, null)), tree(7,
- % null, null)).
- %1.
- add(null, S) :- S is 0.
- add(tree(X,Y,Z), S) :- add(Y, S1), add(Z, S2), S is X + S1 + S2.
- %2.
- count_leaves(null, Count) :- Count is 0.
- count_leaves(tree(_, null, null), Count) :- !, Count is 1.
- count_leaves(tree(_,Y,Z), Count) :- count_leaves(Y, Count1), count_leaves(Z, Count2), Count is Count1 + Count2.
- %3.
- rootValue(tree(X, _, _), Y) :- Y is X.
- compute(tree(X, null, null), Result) :- number(X), !, Result is X.
- compute(tree(+, X, Y), Result) :- compute(X, Op1), compute(Y, Op2), Result is Op1 + Op2.
- compute(tree(-, X, Y), Result) :- compute(X, Op1), compute(Y, Op2), Result is Op1 - Op2.
- compute(tree(*, X, Y), Result) :- compute(X, Op1), compute(Y, Op2), Result is Op1 * Op2.
- compute(tree(/, X, Y), Result) :- compute(X, Op1), compute(Y, Op2), Result is Op1 / Op2.
- %4.
- %
- convert(X, Result) :- Result = tree(X, null, null),number(X).
- convert(X+Y, Result) :- Result = tree(+, X1, Y1),convert(X, X1), convert(Y, Y1) .
- convert(X-Y, Result) :-Result = tree(-, X1, Y1), convert(X, X1), convert(Y, Y1).
- convert(X*Y, Result) :- Result = tree(*, X1, Y1),convert(X, X1), convert(Y, Y1).
- convert(X/Y, Result) :- Result = tree(/, X1, Y1),convert(X, X1), convert(Y, Y1) .
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement