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?
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 sindWenn dies der Fall ist, entfernen Sie die else: und ändern Sie die Rückkehr zu
%Vor%