%vstup se zadává do matice A
%vystup jsou souradnice sedlovych bodu a jejich hodnota
%nebo hodnota hry a pravdepodobnosti
%Jeden sedlovy prvek:A=([6,6,2;-7,-6,-6;7,7,-6])
%Vice sedlovych prvku:A=([0,2,0;0,1,0;0,3,0])
%Zadny sedlovy prvek:A=([0,-1,-2;-2,0,1])
%Zadani matice A
A=input('Zadejte matici:')
%Načtení celkového počtu řádků a slopců matice do atributu rowSize a colSize
[rowSize,colSize] = size(A);
%pole pro zobrazení indexu pozice sedlových prvků v matici
row=[];
col=[];
%cykus pro kontrolu všech prvků v matici
for iRow = 1:rowSize
    for jCol = 1:colSize  
%vyhledání všech pozic hodnot nejmenších v řádku a zároveň nejmenších ve sloupci
       if A(iRow,jCol) == min(A(iRow,:)) && A(iRow,jCol)== max(A(:,jCol));
            row(length(row)+1)=iRow;
            col(length(col)+1)=jCol;
       end
    end
end
%řešení pro jeden nalezený sedlový bod
if (length(row)==1 && length(col)==1)
   Reseni=['Sedlovy prvek je na pozici: (' int2str(row) ',' int2str(col) ') a jeho hodnota je: ' num2str(A(row,col))]
else
%řešení pro více nalezených sedlových bodů
%definice pole a cyklus pro výpis více pozic sedlových bodů
multipleSaddles=[];
    for iRow=1:length(row)
        multipleSaddles=[multipleSaddles '(' int2str(row(iRow)) ',' int2str(col(iRow)) ')'];
    Reseni=['Sedlove prvky jsou na pozicich: (' multipleSaddles ') a jejich hodnota je: ' num2str(A(row(1),col(1)))]
    end
end
%řešení pro smíšené strategie(nebyl nalezen sedlový prvek)
if (length(row)==0 && length(col)==0)
%konstantní matice jedniček    
AA = [ones(colSize,1) -A'];
Aeq = [0 ones(1,rowSize)];
%matice nul
b = zeros(colSize,1);
beq = [1];
lb = [-inf;zeros(rowSize,1)];
f = -[1;zeros(rowSize,1)];
%Funkce pro lineární programovani
P = linprog(f,AA,b,Aeq,beq,lb);
v=P(1,1);P(1,:)=[];
%Reseni pro smisene strategie
Reseni=['Neexistuje žádný sedlový bod a hodnota hry je: ' num2str(v) ' a smíšené strategie jsou dány maticí:']
Pravdepodobnost=P
end
