Hallo,
also erstmal muss ich sagen,dass ich kein Informatiker bin,sondern dieses Fach lediglich dieses Jahr in der Schule gewählt habe.
Ich bin gleich auf ein Problem gestoßen
Unsere Aufgabe lautet:
In Logo einen Roboter programmieren,der aus jedem Labyrinth rausfindet (aus dem es geht)
und was wir über das Labyrinth wissen:
Wanddicke 10
Wandfarbe schwarz [ 0 0 0]
Eingangsfarbe blau
Ausgangsfarbe grün
Also habe ich einen Rechtsgeher entworfen,der immer rechts geht, wenn er kann und wenn nicht sich je nach Farbe etc. so dreht,dass er rechts gehen kann.
Die Prozedur sieht folgendermaßen aus:
pr robo
setpencolor [255 0 0]
setpensize [10]
re 90
sh
vw 10
wenn gleich? pixel [0 0 255] [rw 10 sa vw 10 ende]
wenn gleich? pixel [255 255 255] [rw 10 sa vw 10 robo]
wenn gleich? pixel [255 0 0] [rw 10 li 90 vw 10
wenn gleich? pixel [255 255 255] [rw 10 sa vw 10 robo]]
wenn gleich? pixel [0 0 0] [rw 10 li 90 vw 10
wenn gleich? pixel [255 255 255] [rw 10 sa vw 10 robo]
wenn gleich? pixel [0 0 0] [rw 10 li 90 vw 10
wenn gleich? pixel [255 255 255] [rw 10 sa vw 10 robo]
wenn gleich? pixel [0 0 0] [rw 10 li 90 robo]]]
ende
Das kommt dann auch wunderbar durch "normale"Labyrinthe durch:
Das Problem sind dann etwa solche "Sackgassen".
Zufällig bin ich darauf gekommen,dass es bei einfachen Sackgassen, also wo der Igel einfach nur wieder rückwärts rauslaufen muss, es gut funktioniert, wenn man zwischen den letzten Teil der Prozedur und "ende" einfach noch einfügt:
"setpencolor [ 0 255 255 ] (türkis)
rw 10
sa
vw 10
robo"
Allerdings gibt es noch folgende Problemsackgassen:
Und hier liegt mein wirkliches Problem:
ich komm einfach nicht dahinter, wie ich ´dem Programm sage, dass es solang der roten Spur folgen kann, bis der Rechtsgeher wieder funktioniert.
Wie man, denke ich, erkennen müsste liegt dem ganzen ja die Rekursion zur Grunde.
Dieser Zusatz,der dazu führt "einfache Sackgassen" auch lösen zu können, ist denke ich, nicht ausbaufähig und es war eher Zufall,dass sich das ergeben hat.
Hat jemand von euch vielleicht eine Idee, wie ich mein Programm in dieser Hinsicht erweitern kann?
Es ist wirklich sehr wichtig.
Vielen Dank schon im Vorraus,
Raira
Achja,dass die Bilder nicht funktionieren, hab ich leider auch gemerkt, aber ich kümmer mich da morgen drum,vielleicht kann ja jemand mein Problem trotzdem [ansatzweise] verstehen.