%% edinicy

d([K|D],L) :- k(K,L).
d([K|D],L) :- d(D,L), not(k(K,L)). %% "not" ne rabotaet b "gprolog"

k([0],[1]).
k([0],[0]).
k([1],[1]).
k([2],[0]).
k([A|K],[X|L]) :- k(K,L), k([A],[X]). %% menyat' mestami nelzya (cykl)

%% nuli

nd([K|D],L) :- g(K,L), not(d([K|D],L)).

g([_], [0]).
g([_], [1]).
g([A|K],[X|L]) :- g(K,L), g([A],[X]). %% menyat' mestami nelzya (cykl)
