Playing around with prolog
[sandbox] / prolog / test.pl
1 bitor(1, [1|_]).
2 bitor(0, [0]).
3 bitor(B, [0|T]) :- bitor(B, T).
4
5 bitand(0, [0|_]).
6 bitand(1, [1]).
7 bitand(B, [1|T]) :- bitand(B, T).
8
9 bitcomposition(0, []).
10 bitcomposition(N, [H|T]) :-
11     H is N mod 2,
12     Shift is N // 2,
13     bitcomposition(Shift, T).
14
15
16 inc(N, NPlusOne) :- add(NPlusOne, N, 1).
17
18 add(Z, X, Y) :- var(X), X is Z - Y.
19 add(Z, X, Y) :- var(Y), Y is Z - X.
20 add(Z, X, Y) :- Z is X + Y.