% Johannes Gimpl function Y = SudokuShort(X) % Durchlaufen der 81 Sudokufelder for ii=1:9 for jj=1:9 % Überprüfung auf ein "leeres" Feld im Sudoku if X(ii,jj)==0 for ll=1:9 % Vergleich des Sudoku mit einer Zahl (ll) und Speicherung temp=(X==ll); % Zeilenüberprüfung, Spaltenüberprüfung, Kästchenüberprüfung ob Zahl ll schon vorhanden if sum(temp(ii,:))==0 && sum(temp(:,jj))==0 && sum(sum(temp(ceil(ii/3)*3-2:ceil(ii/3)*3,ceil(jj/3)*3-2:ceil(jj/3)*3)))==0 % Einsetzten der Zahl X(ii,jj)=ll; % rekursiver Aufruf des Programms SudokuShort(X) % *1* "Löschen" der zuletzt gesetzten Zahl, die falsch war X(ii,jj)=0; end end end % Abbruch der laufenden function, wenn keine Zahl mehr eigestzt % werden konnte und Fortsetzung mit *1* in der vorhergehenden function if X(ii,jj)==0 return end end end Y=X; % Ausgabe des Ergebnisses % Dieses Programm benutzt zur Lösung eines Sudokus die sogenannte % Backtracking Methode. % Umgestzt wird diese Methode mit Hilfe eines rekursiven Programmaufrufs. % Durch dieses "Austesten" aller Möglichkeiten können auch "Sudokus" mit % mehreren Lösungen gelöst und diese dann auch angezeigt werden.