// 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);
}

void setup() {
  Serial.begin(9600);
  Serial.println("-------------------");
  delay(500);

  while (!weg.endsWith("E")){
    weg = addKreuzung(weg,testWeg);
    anzeigenWeg(weg);
    //weg = kuerzenWeg(weg);  // Den Weg hier schrittweise kürzen
    delay(100);
  }
  Serial.println(" ------------- ENDE -------------");

  Serial.println("\n Gekürzter Weg:");
  weg = kuerzenWeg(weg);   // Den Gesamtweg kürzen
}

void loop() {
}





uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5