// https://www.mazegenerator.net/
// L = links
// R = recht
// G = gerade
// Z = zurück
// E = Ende
String testWeg = "RZRRLLRZLRRGRGZRRE";
String testWeg1 = ""; // Labyrinth 1
String testWeg2 = ""; // Labyrinth 2
int count = 0; // aktuelle Kreuzungsnummer
String weg;
// AUFGABE: Schreiben Sie eine Funktion, welche den übergebenen Weg `pWeg` so kürzt
// das Sackgassen vermieden werden.
// Nutzen Sie folgende Regeln:
// RZG = L, RZR = G, RZL = Z, GZR = L, GZG = Z, LZR = Z
// Hinweise zum Lösen:
// - Wenden Sie die Funktion kuerzenWeg() nach jeder neuen Kreuzung an
// - Folgende String-Methoden können beim Lösen der Aufgabe hilfreich sein:
// pWeg.substring(von,bis) https://reference.arduino.cc/reference/de/language/variables/data-types/string/functions/substring/
// pWeg.replace("abc","b") https://www.arduino.cc/reference/de/language/variables/data-types/string/functions/replace/
// pWeg.indexOf("a") https://reference.arduino.cc/reference/de/language/variables/data-types/string/functions/indexof/
String kuerzenWeg(String pWeg){
//
// Ihr Code ...
//
return pWeg;
}
String addKreuzung(String weg, String test){
if (test.length() > count) {
char kreuzung = test.charAt(count);
if ( kreuzung == 'L' || kreuzung == 'R' || kreuzung == 'Z' || kreuzung == 'G' || kreuzung == 'E' ){
weg = weg + test.charAt(count);
count++;
}
else {
Serial.print("Unknown kreuzung type: ");
Serial.println(kreuzung);
}
}
return weg;
}
void anzeigenWeg(String pPath){
Serial.println(String(count) + ":> "+ pPath);
}
// --------- SETUP() ----------------------
void setup() {
Serial.begin(9600);
Serial.println("-------------------");
delay(500);
while (!weg.endsWith("E")){
weg = addKreuzung(weg,testWeg);
anzeigenWeg(weg);
weg = kuerzenWeg(weg); // <----- HIER wird der Weg gekürzt
delay(100);
}
Serial.println(" ------------- ENDE -------------");
}
// --------- LOOP() ----------------------
void loop() {
}