function m = pascal( n,p)
%PASCAL vrati matici obsahujici Pascaluv trojuhelnik
%   n je sirka matice zaokrouhlena na nejblizsi vetsi liche cislo
%   p je modulus ve kterem se matice pocita
%   algoritmus je presne stejny, jaky vsichni zname ze stredni skoly
%   vyslednou matici lze prohlizet pomoci funkce spy nebo pcolor

if mod(n,2)==0;
    n = n+1;
end

s = (n+1)/2;    % index prostredniho sloupce a zaroven vyska matice

m = zeros(s,n); % zaciname se samyma nulama
m(1,s) = 1;     % doprostred prvniho radku dame jednicku

for i=2:s       % a od druheho radku pocitame zbytek
    m(i-1,1) = rem( m(i-1,2), p);   % tohle tu je, abychom s indexy nevylezli mimo matici
    for j=2:n-1
        m(i,j) = rem( m(i-1,j-1) +  m(i-1,j+1), p);     % vzorecek ze stredni skoly
    end
    m(i-1,n) = rem( m(i-1,n-1), p);
end