Robot Karol ganzen Boden ausfüllen?

2 Antworten

Überlege Dir den Algorithmus zunächst im Kopf. Die eine Möglichkeit wäre eine Spirale von außen nach innen. Dabei wäre allerdings die Zählung in der KAROL-Sprache schwierig, wie weit der Roboter laufen soll.

Die Alternative sind Schlangenlinien. Robot Karol läuft solange vorwärts und legt einen Stein, bis er an die Wand trifft. Dann dreht er sich um und macht dasselbe nochmal - solange, bis rechts neben ihm auch eine Wand ist. Voraussetzung dabei ist natürlich, dass Karol links unten in der Welt anfängt.

Ein kurzer Pseudocode:

  1. solange keine Wand vor ihm ist, Stein setzen und einen Schritt machen
  2. wenn er auf eine Wand trifft, dann einen Schritt nach rechts machen und umdrehen
  3. das wiederholen, bis rechts neben ihm eine Wand ist

Unter Umständen musst Du Karol anfangs noch nach links unten laufen lassen (falls der Startpunkt beliebig ist). Sofern er dann allerdings wieder zum Startpunkt zurückkehren soll, musst Du am Ende noch eine entsprechende Sequenz hinzufügen (eine Marke am Startpunkt bietet sich da an).

LG

CrazyRazy0815 
Fragesteller
 14.05.2018, 14:24

Ich habe schon sowas in der Art,aber immer knallt er am Schluss gegen die Wand.

Kannst du mir eine Anweisung schreiben?

0

Wenn die Welt einfach nur rechteckig ist, einfach im Zickzack drüberlaufen und am Ende wieder an den Anfang zurück. Der Roboter muss sich natürlich merken, wo er gerade ist.

Oder du fasst die Welt als Labyrinth mit sehr vielen "Kreisen" auf und verwendest einen der Labyrinthalgorithmen -- wobei du den Ausgang ignorierst --, um jedes Feld mindestens einmal zu besuchen. (Labyrinthalgorithmen erfordern mindestens 3 verschiedene Zustände jedes Weges -- 0, 1 oder 2 "Markierungen"; wie man die abbildet, ist ein Problem für sich.) Am Ende wieder zurückfahren.

Zu Labyrintalgorithmen siehen https://de.wikipedia.org/wiki/L%C3%B6sungsalgorithmen_f%C3%BCr_Irrg%C3%A4rten

Am vielversprechendsten dürfte dies sein: https://de.wikipedia.org/wiki/L%C3%B6sungsalgorithmen_f%C3%BCr_Irrg%C3%A4rten#Auff%C3%BCllen_von_Sackgassen

Am leichtesten umzusetzen dies: https://de.wikipedia.org/wiki/L%C3%B6sungsalgorithmen_f%C3%BCr_Irrg%C3%A4rten#Zuf%C3%A4llige_Wegwahl

Woher ich das weiß:Berufserfahrung – Software-Entwickler
CrazyRazy0815 
Fragesteller
 14.05.2018, 14:21

Ich wollte es aber mit Befehlen wie:wenn IstWand dann wenn istosten etc. machen.Die Welt ist immer viereckig.

das mit den Links die du geschrieben hast versteh ich nicht

0
PWolff  15.05.2018, 15:52
@CrazyRazy0815

Ein Labyrinth-Algorithmus, der am Ende alle Felder aller Gänge mit derselben Markierung versehen hat, sollte sich vergleichsweise leicht so modifizieren lassen, dass die Endmarkierung eine einfache Schicht aus Kacheln ist.

0
CrazyRazy0815 
Fragesteller
 14.05.2018, 15:49

Könntest du mir eine Anwesiung schreiben?

0