diff --git a/server/pruef-crew-adresse.mjs b/server/pruef-crew-adresse.mjs index 94af9e69..dedc4816 100644 --- a/server/pruef-crew-adresse.mjs +++ b/server/pruef-crew-adresse.mjs @@ -491,23 +491,69 @@ for (const [rolle, name] of [["admin", "DogFather"], ["hand", "Rechte Hand"], [" ok(wandCrew.text.includes(`data-rolle="${rolle}"`) && wandCrew.text.includes(`>${name}<`), `crew.: die Kachel "${name}" steht da`); } -/* WELCHES ZEICHEN AUF WELCHER KACHEL (Filipe, 10.09.2026: "bei rechte - hand soll der husky sein und bei modis soll die pfote sein"). +/* WELCHES ZEICHEN AUF WELCHER KACHEL + --------------------------------------------------------------------- + HIER STAND BIS ZUM 22.09.2026 DAS GEGENTEIL, und beide Fassungen + geben eine Anweisung von Filipe wieder: - Geprueft wird die ZUORDNUNG, nicht das Aussehen: DogFather und die - rechte Hand tragen dasselbe, der Modi ein anderes. So gelesen haelt - die Pruefung auch dann, wenn die Zeichen selbst eines Tages neu - gezeichnet werden -- gewollt ist die Gruppe, nicht der Husky. */ + 10.09.: "bei rechte hand soll der husky sein und bei modis soll + die pfote sein" -> DogFather und rechte Hand gleich. + 22.09.: "bei dogi soll kein husky sein sondern eine krone. die + auch extrem auffaellt damit man den unterschied extrem + erkennt." -> DogFather eigenes Zeichen. + + Dazwischen ist die LINKE Hand dazugekommen. Damit trugen DREI von + fuenf Kacheln denselben Husky -- und drei gleiche Zeichen + untereinander sind kein Zeichen mehr, sondern Tapete. + + WAS JETZT GEPRUEFT WIRD, ist deshalb nicht mehr eine einzelne + Zuordnung, sondern die Eigenschaft, um die es geht: Jede Kachel + traegt ein Zeichen, und das von DogFather kommt kein zweites Mal + vor. Das haelt auch, wenn die Zeichen neu gezeichnet werden oder + eine sechste Rolle dazukommt -- eine abgeschriebene Paarliste + haette beim naechsten Umbau wieder danebengelegen. + + Die zwei Haende teilen sich weiterhin eines, und das ist Absicht: + Sie haben denselben Untertitel ("vertritt und koordiniert") und + lesen sich als Paar. Geprueft wird deshalb nicht "alle + verschieden", sondern "DogFather ist einmalig". */ { const zeichenVon = (rolle) => { const stelle = wandCrew.text.indexOf(`data-rolle="${rolle}"`); if (stelle < 0) return null; - return (/href="(#r-[a-z]+)"/.exec(wandCrew.text.slice(stelle, stelle + 400)) || [])[1] || null; + return (/href="(#r-[a-z-]+)"/.exec(wandCrew.text.slice(stelle, stelle + 400)) || [])[1] || null; }; - const [zAdmin, zHand, zModi] = ["admin", "hand", "modi"].map(zeichenVon); - ok(!!zAdmin && zHand === zAdmin, - `crew.: die Rechte Hand traegt dasselbe Zeichen wie DogFather (${zHand} / ${zAdmin})`); + const zeichen = Object.fromEntries(ERWARTETE_REIHE.map((r) => [r, zeichenVon(r)])); + const ohne = ERWARTETE_REIHE.filter((r) => !zeichen[r]); + ok(ohne.length === 0 && ERWARTETE_REIHE.length > 0, + ohne.length ? `crew.: ohne Zeichen: ${ohne.join(", ")}` + : `crew.: jede der ${ERWARTETE_REIHE.length} Kacheln traegt ein Zeichen`); + + const zAdmin = zeichen.admin; + const wieOft = Object.values(zeichen).filter((z) => z === zAdmin).length; + ok(!!zAdmin && wieOft === 1, + `crew.: DogFathers Zeichen (${zAdmin}) kommt genau einmal vor (${wieOft})`); + ok(zAdmin === "#r-krone", `crew.: und es ist die Krone (${zAdmin})`); + + /* Das Zeichen muss es auch GEBEN. Ein `use` auf eine Kennung, die + nirgends steht, zeichnet nichts -- und zwar lautlos: keine + Fehlermeldung, kein leeres Kaestchen, einfach nichts. Genau so + saehe eine vertippte Kennung aus. */ + ok(wandCrew.text.includes('id="r-krone"'), + "crew.: und die Krone ist auf der Seite auch definiert"); + + /* GEGENPROBE: Die Messung muss einen Verstoss auch sehen koennen. + Zwei erfundene Verteilungen, eine richtig, eine mit doppeltem + DogFather-Zeichen. */ + const zaehl = (v) => Object.values(v).filter((z) => z === v.admin).length; + ok(zaehl({ admin: "#r-krone", hand: "#r-husky", modi: "#r-pfote" }) === 1 + && zaehl({ admin: "#r-husky", hand: "#r-husky", modi: "#r-pfote" }) === 2, + "crew.: Gegenprobe -- ein doppelt vergebenes Zeichen wuerde auffallen"); + + const zModi = zeichen.modi; ok(!!zModi && zModi !== zAdmin, `crew.: der Modi ein eigenes (${zModi})`); + ok(zeichen.hand === zeichen.linke && !!zeichen.hand, + `crew.: die zwei Haende lesen sich als Paar (${zeichen.hand} / ${zeichen.linke})`); } /* Die Namen kommen aus den Kacheln, nicht aus einer Liste in gate.js -- diff --git a/workspace/anruf-probe.html b/workspace/anruf-probe.html index 3314d4df..44e249ed 100644 --- a/workspace/anruf-probe.html +++ b/workspace/anruf-probe.html @@ -16,15 +16,15 @@ verdeckt. Gefunden hat es pruef-struktur. Richtig sind `gate.css` (die Farbwerte des Hauses) und `haus.css`. --> - - + + - +