Labyrinth lösen mit Python

8

Ich versuche, einen Labyrinth-Löser zu machen, und es funktioniert, außer dass der Pfad, der mit "o" markiert ist, mit "& gt;", "& lt;", "v", " ^ "abhängig von der Richtung des Pfades. Dies ist der Teil des Codes, wo es das Labyrinth löst:

%Vor%

Dies ist ein Beispiel für ein ungelöstes Labyrinth:

%Vor%

Und das ist die gelöste Version des gleichen Labyrinths mit dem obigen Code:

%Vor%

Das Ergebnis, das ich erreichen möchte, ist:

%Vor%

Wie ist es möglich, dies zu tun?

    
aboodmufti 27.03.2014, 22:00
quelle

2 Antworten

4
%Vor%

Von Lix Beispiel. Sie müssen das Maze-Zeichen [y] [x]="o" auskommentieren. Sie benötigen diese Zeile, um zu verhindern, dass der Knoten erneut aufgerufen wird.

    
marqs 27.03.2014, 22:50
quelle
1

Ich würde vorschlagen, dass anstatt den Wert sofort auf 'o' zu setzen und 'True' zurückzugeben, Sie if ... elif verwenden, um das Zeichen zu setzen und dann zurückzukehren.

@marqs wies darauf hin, dass meine ursprüngliche Antwort es der Rekursion erlaubt hätte, eine Position wiederzubesuchen, die sich bereits als falsch herausgestellt hatte. Als Ergebnis markieren Sie alle Positionen mit 'o', so dass sie nicht erneut aufgerufen werden können und später durchlaufen Sie alle 'o' als ''

Beachten Sie, dass ich vorschlage, wenn ... elif seit vier separaten ifs immer die anderen Möglichkeiten prüft, obwohl sie sich als falsch erwiesen hätten, indem sie bereits den wahren Pfad gefunden haben.

%Vor%

Dies führt dazu, dass der versuchte (falsche) Pfad mit 'o' gefüllt und dann wieder auf leer gesetzt wird, wenn es als unwahr angezeigt wird.

Alternativ können Sie es mit einem "o" belassen und nachdem der wahre Pfad gefunden wurde, gehen Sie zurück über das gesamte Labyrinth und löschen Sie die Punkte, die mit 'o' markiert sind

Wenn dies der Fall ist, entfernen Sie die else: und ändern Sie die Rückkehr zu

%Vor%     
sabbahillel 27.03.2014 22:18
quelle

Tags und Links