Felder färben

Programmiere den Roboter:

Der Roboter soll alle markierten Felder färben.

Hinweis: Die markierten Felder liegen alle unter einem bereits eingefärbten dunkelgrünen Feld.

Hinweis: Die untere Zeile entspricht der oberen Zeile, bloß, dass sie von links nach rechts vertauscht ist. Das untere Feld an der Stelle 2 ist markiert, wenn das obere Feld an der Stelle 15 dunkelgrün eingefärbt ist, das an der Stelle 3, wenn das an der Stelle 14 dunkelgrün markiert ist, und so weiter.

Hinweis: Ein Feld in der untere Zeile ist markiert, wenn es darüber mehr dunkelgrün eingefärbte Felder gibt, als ungefärbte Felder.


Weitere Hinweise:

Die Schwierigkeit besteht darin, dass der Roboter, sobald er in die zweite Zeile gegangen ist, nicht mehr nach oben gehen kann.

Dein Programm muss sich also merken, welche Felder in der ersten Zeile markiert sind, und dann mit diesem Speicher bestimmen, welche Felder in der zweiten Zeile gefärbt werden sollen.
Ein mögliches Vorgehen wird hier hergeleitet:

Zum Beispiel kann man eine Variable pro Zelle zu erstellen, um die Sensorwerte zu speichern:

In den Variablen wird ein Wahrheitswert (Boolean) gespeichert. Ist das Feld gefärbt, hat die Variable den Wert True. Ist das Feld nicht gefärbt, hat die Variable den Wert False.
Dann könnte man für jedes Feld in der zweiten Zeile die entsprechende Variable lesen, um festzustellen, ob das Feld gefärbt werden soll. Falls die Variable den Wert True hat, wird die Anweisung im falls-mache-Baustein ausgeführt.

Anstatt 15 verschiedene Variablen für jedes der 15 Felder vor dem Roboter zu speichern, soll der Roboter eine Liste verwenden, um sich zu merken, ob das Feld gefärbt ist oder nicht. Eine Liste ist eine Variable, die mehrere Elemente enthalten kann. Die Elemente sind durchnummeriert, beginnend mit 1. Wir beginnen mit der Erstellung einer Liste mit 16 mal dem Element False, die wir einer Variablen zuweisen:

Die Werte können dann als Elemente in der Liste gespeichert werden, indem man ihre Nummer und den Wert, den man an der Position mit dieser Nummer speichern möchte, angibt.

Hier wollen wir den Sensorwert für jede der 15 Felder vor dem Roboter speichern. Daher wird ein Sensor, der die Nummer der Spalte des Roboters auf dem Gitter angibt, als Positionsnummer in der Liste verwendet. Der Baustein Farbe auf Feld gibt True zurück, falls Farbe auf dem Feld ist und False, falls keine Farbe auf dem Feld ist. Für jede Spalte speichern wir in der Liste alleSpalten also die Information True oder False:

Sobald der Roboter dann in der zweiten Zeile ist, kann er die gespeicherten Werte wieder aus der Liste lesen. Falls in der Liste True gespeichert wurde, so muss das Feld markiert werden:

Dein Programm muss daher einfache Berechnungen mit den Positionsangaben der Spalten machen.

Beachte: Dein Programm muss mit allen Testfällen zurechtkommen.