Skip to end of metadata
Go to start of metadata

Forslag:

function Min_sudoku()
valg = 7;
while valg ~= 0
    if valg == 1
        brett = zeros(9,9);
        brett = sudoku (brett);
    elseif valg == 2
        lagreSpel(brett);
        disp('Spelet ditt har nå blitt lagra');
    elseif valg == 3
        brett = lastSpel();
        disp('Spelet ditt har blitt lasta');
    elseif valg == 4
        brett = sudoku (brett);
    elseif valg == 5;
        disp('1. Enkel');
        disp('2. Middels');
        disp('3. Vanskelig');
        disp('4. Hjerterå');
        grad = input('Kva vanskelighetsgrad? ');
        if (grad == 1) || (grad == 2) || (grad == 3) || (grad == 4)
            brett = randomBrett(grad);
            brett = sudoku (brett);
        else
            fprintf('Ugyldig vanskelighetsgrad\n\n');
        end
    %elseif valg == 6
        %brett = sudoku (brett);
    end
disp('Velkommen til Min Sudoku');
disp('1. Start eit nytt spel');
disp('2. Lagre spel til fil');
disp('3. Last spel frå fil');
disp('4. Fortsett å spela');
disp('5. Spel tilfeldig brett');
%disp('6. Løys gjeldane brett');
disp('0. Avslutt');
valg = input('Velg eit tal frå menyen: ');
    
end
end
function lagreSpel(brett)
filnavn = input('Skriv namnet på fila du vil lagra spelet til: ','s');
fid = fopen(filnavn,'w');
for i = 1: 9
    for j = 1:9
    fprintf(fid,'%d\n', brett(i,j));
    end
end
fclose(fid);

end
function brett = lastSpel()
filnavn = input('Skriv navnet på fila du vil lasta spelet frå: ','s');
fid = fopen(filnavn);
i = 1;
j = 1;
brett = zeros(9,9);
while ~feof(fid)
    aline = fgetl(fid);
    brett(j,i) = str2num(aline);
    i = i +1;
    if i > 9
        j = j + 1;
        i = 1;
    end
end
fclose(fid);
fprintf('Spelet har nå blitt lasta\n\n');
end
function brett = sudoku (brett)
slutt = 'N';
visBrett(brett);
while strcmp('Y',slutt) ~= 1
    rad = input('Rad: ');
    kol = input('Kolonna: ');
    tall = input('Tall: ');
    [m_rad,m_kol] = sudoku_mini_matrise(rad,kol);
    if tall < 10 || tall > 0
        if sum(brett(rad,:) == tall) > 0
            disp('Ugyldig trekk');
        elseif sum(brett(:,kol)==tall) > 0
            disp('Ugyldig trekk');
        elseif sum(sum(brett(m_rad,m_kol)== tall)) > 0
            disp('Ugyldig trekk');
        else
            brett(rad,kol) = tall;
        end
    else
        disp('Ugyldig tall');
    end
    visBrett(brett);
    if sum(sum(brett))== 405
    disp('Gratulerar! Du har klart brettet!');
    return;
    end
slutt = upper(input('Vil du avslutta(Y/N)? Skriv "fjern" om du vil fjerna eit tall: ','s'));
if strcmp ('FJERN', slutt)
    rad = input('Rad: ');
    kol = input('Kolonna: ');
    brett(rad,kol) = 0;
    visBrett(brett);
    slutt = upper(input('Vil du avslutta(Y/N)? Skriv "endre" om du vil fjerna eit tall: ','s'));
end
end
end
function [m_rad,m_kol] = sudoku_mini_matrise(rad,kol)
if rad < 4
    m_rad = 1:3;
elseif rad < 7
    m_rad = 4:6;
else
    m_rad = 7:9;
end
if kol < 4
    m_kol = 1:3;
elseif kol < 7
    m_kol = 4:6;
else
    m_kol = 7:9;
end
    
end
Nivå: Lett
0
5
0
2
0
4
6
1
3
0
0
9
0
3
0
0
4
8
0
0
4
0
1
5
7
0
0
0
0
2
0
7
6
0
0
9
0
0
5
0
0
0
3
0
0
9
0
0
4
5
0
1
0
0
0
0
6
7
4
0
2
0
0
4
3
0
0
8
0
9
0
0
8
2
7
9
0
1
0
3
0




  • No labels