Validierung und Qualitätssicherung

**Prüfung:** Sind alle erforderlichen Komponenten vorhanden?

Mehrschichtige Validierung

Ebene 1: Strukturvalidierung

Prüfung: Sind alle erforderlichen Komponenten vorhanden?

function validiereStruktur(layout) {
  const erforderlich = ["ES", "IST", "HALB", "UHR", "VOR", "NACH"];
  const fehlt = erforderlich.filter(wort => !layout.includes(wort));

  if(fehlt.length > 0) {
    return {gültig: false, fehler: `Fehlende Wörter: ${fehlt}`};
  }
  return {gültig: true};
}

Ebene 2: Nachbarschafts-Validierung

Prüfung: Gibt es identische benachbarte Buchstaben?

function prüfeNachbarn(raster, zeilen=10, spalten=11) {
  for(let z = 0; z < zeilen; z++) {
    for(let s = 0; s < spalten; s++) {
      const index = z * spalten + s;
      const zeichen = raster[index];

      // Horizontal
      if(s < spalten - 1 && zeichen === raster[index + 1]) {
        return {fehler: `Dopplung bei Position ${index}`};
      }

      // Vertikal
      if(z < zeilen - 1 && zeichen === raster[index + spalten]) {
        return {fehler: `Dopplung bei Position ${index}`};
      }
    }
  }
  return {gültig: true};
}

Ebene 3: Schutzrechts-Compliance

Prüfung: Ist das Layout identisch mit geschützten Designs?

function prüfeSchutzrechte(layout) {
  const geschützteLayouts = [
    "ESKISTAFÜNFZEHNZWANZIG...", // Beispiel geschütztes Design
    // Weitere geschützte Varianten
  ];

  for(const geschützt of geschützteLayouts) {
    if(vergleicheLayouts(layout, geschützt)) {
      return {
        gültig: false,
        warnung: "Layout ist identisch mit geschütztem Design!",
        hinweis: "Bitte eigenes Design entwickeln."
      };
    }
  }
  return {gültig: true};
}

Qualitätsmetriken

Lesbarkeit

  • Durchschnittliche Anzahl beleuchteter Buchstaben
  • Minimale/Maximale Wortlänge
  • Gleichmäßige Verteilung

Effizienz

  • Anzahl ungenutzter Felder
  • Wiederverwendung von Buchstaben (z.B. FÜNF als Minute und Stunde)

Wartbarkeit

  • Konsistente Positionierung
  • Logische Gruppierung
  • Dokumentation im Code