
seq(X,Y,[]) :- 
  X is Y+1.
seq(X,Y,[X|L]) :- 
  X =< Y, 
  Z is X+1, 
  seq(Z,Y,L).

fa_pontszama(leaf(_), 0).
fa_pontszama(node(X,Y), N) :-
  fa_pontszama(X,NX),
  fa_pontszama(Y,NY),
  N is NX + NY + 1. 

hatv(_, 0, 1).
hatv(A, E, H) :-
  E > 0,
  E1 is E-1,
  hatv(A, E1, H1),
  H is A*H1.

fa_noveltje( leaf(X), leaf(Y) ) :-
  Y is X+1.
fa_noveltje( node(A,B), node(C,D) ) :- 
  fa_noveltje(A,C),
  fa_noveltje(B,D).


%lista_hossza([],0).
%lista_hossza([_|L1],N) :-
%  lista_hossza(L1, N0),
%  N is N0 + 1. 

lista_hossza(L,N) :-
  lh(L,0,N).

% lh(*L, X, Y)
% L lista hosszahoz X-et adva Y-t kapjuk
lh([],X,X).
lh([_|L],X,Y) :-
  X1 is X+1,
  lh(L,X1,Y).

lista_noveltje([],[]).
lista_noveltje([X|L], [Y|L1]) :- 
  Y is X+1, 
  lista_noveltje(L,L1).

utso([E],E).
%utso([_|L], E) :-
%  lista_hossza(L,H), 
%  H > 0,
%  utso(L,E).
utso([_|L], E) :-
   L \= [], 
   utso(L,E).