WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Sudokulöser

 

Matlab_Anfänger

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2013, 18:26     Titel: Sudokulöser
  Antworten mit Zitat      
Hallo,

Ich habe eine Aufgabe bekommen und bin damit absolut überfordert. Wäre sehr nett wenn mir jemand helfen könnte.
Hier die Aufgabe:

Schreiben Sie ein Matlab-Programm, welches in der Lage ist, aus Text-Dateien Sudokus in
Form von Matrizen einzulesen und diese korrekt zu lösen. Implementieren Sie zunächst eine
Funktion function C = Kand(A), welche als Input-Operator ein unvollständiges Sudoku als
9 x9-Matrix bekommt. Output-Operator soll ein Cell-Array C sein, in dem alle möglichen
Kandidaten der noch nicht besetzten Felder gespeichert werden. Weiter sollen Sie eine Funktion
function A = SudSolv(A) implementieren, welche als Input-Operator ein unvollständiges
Sudoku als 9 x9-Matrix bekommt und als Output-Operator dieses vollständig gelöst ausgibt.
Algorithmus der function A = SudSolv(A) :
 Bestimmen Sie die möglichen Kandidaten aller leeren Felder des Sudokus
 Füllen Sie alle leeren Felder des Sudokus aus, die nur einen moglichen Kandidaten haben
 Kontrollieren Sie, ob die so eingetragenen Werte mit den Sudokuregeln konform sind
 Iterieren Sie die ersten 3 Schritte bis nur noch Felder mit mehreren möglichen Kandidaten
existieren
 Setzen Sie nacheinander alle möglichen Kandidaten des ersten leeren Feldes ein und beginnen
Sie den Algorithmus von vorne bis eine Lösung gefunden wird (Backtracking-Methode)
 Geben Sie die Lösung aus
Schreiben Sie eine main, in der Sie die beigefügten Sudoku-Text-Dateien
Sudoku1.txt,Sudoku2.txt,Sudoku3.txt
einlesen und mit ihnen die Funktionen testen.

Die text-Dateien sind nur beliebige ungelöste Sudokus.

Also bis jetzt hab ich mit mühe und Not das hier zusammen gewurstelt:

Code:
function A = SudSolv(A)


C = Kand(A);

while  ~isempty (s) && isempty(e)
    A(s) = C{s};
    [C,s,e] = Kand(A);
end

if ~isempty(e)
    return
end

if any(A(:) == 0)
    Y = A;
    z = find(A(:) == 0,1);
    for r = [C{z}]
        A = Y;
        A(z) = r;
        A = SudSolve(A);
        if all(A(:) > 0)
            return
        end
    end
end

function C = Kand(A)   %function [C,s,e] = Kand(X)
    A = load('Sudoku.txt');
    C = cell(A.length,A.length);

    for j = 1:A.length
         for i= 1:A.length
            if A(i,J)==0
                z= 1:A.length;
                z(nonzeros(A(i,:))) = 0;
                z(nonzeros(A(:,j))) = 0;
                z(nonzeros(A(tri(i),tri(j)))) = 0;
                C{i,j} = nonzeros(z)';
            end
         end
    end
    L = cellfun(@length,C); % Number of candidates  
    s = find(X==0 & L==1,1);
    e = find(X==0 & L==0,1);
end

end


Bitte um HILFE!!!!

und Danke schon mal im Voraus



Edit by Martin: Bitte keine Doppel-Postings und bitte die Code-Formatierung verwenden. Danke!


RiFLoK
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 26.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2013, 00:32     Titel:
  Antworten mit Zitat      
google hilft!

http://www.mathworks.com/matlabcent.....8083-matlab-sudoku-solver

lg
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.