function perm = permutace(n)
% perm = permutace(n)
%
% nacte vsechny permutace cisel 1 az n jako radky do matice perm

if n <= 0 | n - floor(n) > eps
    error('n neni prirozene cislo')
end

if n == 1
    perm = 1;
else
    global perm;  perm = [];

    e = 1 : n; 

    for i = 1 : n
        generuj(i, e(e ~= i));
    end
end

disp(['pocet permutaci z ',int2str(n),' prvku: ', int2str(size(perm,1))])

% konec

function generuj(p, prvky)

global perm

pom = length(prvky);

if pom == 1
    perm = [perm; [p, prvky] ];
else
    for i = 1 : pom
        c = prvky(i);  
        generuj([p, c], prvky(prvky ~= c));
    end
end

