%----------------------------------------------------------------------------
%  INTELIGENCIA ARTIFICIAL - 2024 - TP01
%----------------------------------------------------------------------------
% 6. Script 2. Dada la siguiente matriz booleana, diseñar un script que:
%   a) Dada la matriz booleana simbolizada en la figura adjunta, diseñar
%   un script que genere 15 matrices booleanas, del miso tamño, conteniendo
%   cada una 15 “unos” dispuesto en forma aleatoria.
%       a1) Comparar las 15 matrices con la matriz de muestra e identifcar 
%       las matrices de mayor y menor similitud.
%       a2) Por cada comparacion realizada generar un indice de similitud    
%       (IS pertenece a R) entre 0 y 1 (un valor IS=1 significa que las 
%        matrices son iguales). Orientacion: investigar el indice de Jaccard        
% Comparar imagenes
% https://la.mathworks.com/help/images/ref/imshowpair.html
% Convertir imagen en matriz, viceversa
% https://la.mathworks.com/help/images/ref/mat2gray.html#d126e91831
% InitialMagnification
% https://la.mathworks.com/help/images/ref/imshow.html?searchHighlight=imshow&s_tid=srchtitle_support_results_2_imshow#bvmnrxi-1-Reduce
%----------------------------------------------------------------------------
% Variables
clc
matrixAND=zeros(10,10);
successN=0;
booleanMatrix=zeros(10,10);
IS=0;
%----------------------------------------------------------------------------
% Matriz Original
booleanMatrixOriginal=zeros(10,10);
booleanMatrixOriginal(2,7)=1;
booleanMatrixOriginal(3,[5 6 8])=1;
booleanMatrixOriginal(4,[4 9])=1;
booleanMatrixOriginal([5 6],[3 10])=1;
booleanMatrixOriginal(7,[2 10])=1;
booleanMatrixOriginal(8,3)=1;
booleanMatrixOriginal(9,4)=1;
booleanMatrixOriginal(10,5)=1;
%----------------------------------------------------------------------------
% Comparo 
for i=1:15
    booleanMatrixOriginal
    booleanMatrix=booleanMatrixRandom()
    matrixAND=booleanMatrixOriginal & booleanMatrix     
    successN=size((find(matrixAND)),1);  
    switch successN
        case {1,2,3}
            disp('La similitud es baja')
            disp('INDICE DE SIMILITUD: ')
            IS=successN/15
        case{4,5,6,7}
            disp('La similitud sigue siendo baja')
            disp('INDICE DE SIMILITUD: ')
            IS=successN/15
        case {8,9,10,11,12,13,14}
            disp('Son casi identicas: ')
            disp('INDICE DE SIMILITUD: ')
            IS=sucessN/15
        case 15
            disp('FELICITACIONES!!!...')
            disp('Son identicas')
            disp('INDICE DE SIMILITUD: ')
            IS=1
        otherwise
            disp('Ambas matrices son distintas')
            disp('INDICE DE SIMILITUD: ')
            IS
    end
    scriptGraphicOptional(booleanMatrixOriginal,booleanMatrix,matrixAND)
    fprintf('----------------------------------- \n')
    pause
    close
end