So, ich glaube ich hab es hingekriegt. Dabei hatte ich eigentlich schon am ersten Tag die richtige Idee, aber irgendwie zweifelte ich daran oder hoffte, es geht auch anders. Wie auch immer, zum Schluß hat sich der erste Gedanke als richtig rausgestellt. Aber das wußte ich damals noch nicht.
Zuerst hatte ich die Idee von Sinspin umgesetzt, wo er meinte sich nur nach links und oben zu orientieren. Das Ergebnis war im ersten Moment auch sehr gut. Allerdings ergibt das doch kein eindeutiges Labyrinth, da das Ganze eher aus "Inseln" besteht und man letztendlich immer ans Ziel kommt wenn man nur die Richtung einhält. Hier und da muß man paar Schritte zurück, aber sonst gibt es zig Wege zum Ziel. Allerdings gebe ich zu mich nicht 100% an die Anleitung von Sinspin gehalten zu haben. Vielmehr habe ich seine Beschreibung als Ideengeber genutzt. Es kann also sein, daß eine genaue Einhaltung ein anderes Labyrinth ergibt. Hier aber ein Labyrinth wie er aussieht wenn man sich nach links und oben konzentriert.
Moderiert von
Narses: Siehe Labyrinth1 im Anhang
Neuen Anlauf nahm ich, als ich in der von minnimes empfohlenen Pdf-Beschreibung etwas von Stack gelesen habe. Danach habe ich eigentlich gar nicht mehr weitergelesen, denn das war was ich als Idee gesucht habe. Wie schon gesagt war meine erste Idee es rekursiv zu berechnen, aber irgendwie hatte ich keine Idee wie ich es machen soll. Die Lösung war also der Stack. Per Zufallsgenerator bohrt man sich einen Weg durch das Labyrinth und legt alle Positionen die man nochmal besuchen will auf Stack. Das Ganze war schnell umgesetzt und endete nach erster Begeisterung im zweiten Moment zuerst in einer Enttäuschung.
Moderiert von
Narses: Siehe Labyrinth2 im Anhang
Das sieht wie ein Labyrinth aus, aber wenn man sich das genauer ansieht, dann bemerkt man, daß man die ganze Zeit nur einen Kurs hat. Hier nicht ans Ziel kommen ist geradezu unmöglich, denn der Weg hat kaum Abzweigungen. Wer Weg windet sich, spaltet sich aber kaum. Und wenn, dann nur minimal. Also auch nicht der richtige Weg?
Der Code landete beinahe im Papierkorb, als ich dann die Idee hatte den Stack nicht von oben abzubauen, sondern von unten. Und siehe da, plötzlich hatte ich dieses Labyrinth
Moderiert von
Narses: Siehe Labyrinth3 im Anhang
Kleine Änderung, große Wirkung, denn jetzt kann man sich verirren.
Der Grund wieso das Labyrinth zu einfach war wenn ich den Stack von oben abbaute ist einfach. Das Programm bohrte sich per Zufallsgenerator seinen Weg. Ging es nicht weiter, ging es zu der letzten Stelle zurück und machte weiter. Die letzte Stelle war in der Regel aber gleich in der Nähe, so daß das Ergebnis nur ein großer Tunnel war. Nimmt man die Positionen aber von unten, so ergibt das einen ganz neuen Tunnel.
Zuletzt noch die Beschreibung wie ich es gemacht habe.
- von der aktuellen Zelle, in der man sich gerade befindet, alle vier Nachbarzellen untersuchen, also oben, rechts, unten, links. Hat eine der Nachbarzellen noch alle vier Wände, dann die Position der aktuellen Zelle auf Stack gelegt.
- per Zufallsgenerator eine der geschlossenen Nachbarzellen aussuchen, die Wand durchbrechen und in diese Zelle wechseln.
- Punkt 1 und 2 solange wiederholen bis man in eine Zelle kommt die keine Nachbarzelle(n) mit vier Wänden hat.
- Neue Position für aktuelle Zelle vom Stack (von unten) holen und ab Punkt 1 weitermachen.
Hat sich am Status der Zelle etwas geändert, d.h. die ehemals geschlossene Nachbarzelle ist inzwischen offen, dann wird das im Punkt 3 erkannt und im Punkt 4 holt man sich eine neue Zelle. Der Stack wächst also ziemlich an, denn am Anfang sind fast alle Nachbarzellen noch geschlossen, aber jede Position vom Stack wird nochmal besucht. Und ist die Nachbarzelle inzwischen offen, dann holt man sich eben den nähsten Wert.
- Ist der Stack abgearbeitet, ist man fertig.
Bei dieser Art des Labyrinths kann man jede Position erreichen und es gibt keine Inseln, so daß man, wenn man sich immer links hält, nicht irgendwann wieder an die gleiche Stelle landet. Es gibt also nur einen Weg zum Ziel.
Moderiert von
Narses: Bilder als Anhang hochgeladen, damit sie uns auch erhalten bleiben. 