// 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() {

}