Ausreden-Generator
Setzt aus drei Bausteinen immer neue Ausreden zusammen — für Arbeit, Schule oder Verabredung, mit über 5.000 Möglichkeiten.
„Tut mir leid, aber der Nachbar hat meinen Wohnungsschlüssel eingefroren, und jetzt komme ich erst am Nachmittag los." Solche Sätze baut dieses Script aus drei Bausteinen zusammen: einer Einleitung, einem Ereignis und einer Folge. Jeder Baustein kennt zwölf Varianten, und weil sich die Zahlen multiplizieren, ergeben sich daraus 1.728 verschiedene Ausreden je Anlass — über alle drei Anlässe 5.184. Die Rechnung steht unter dem Ergebnis.
Wählt aus, wofür ihr sie braucht: fürs Büro, für die Schule oder für eine verpasste Verabredung. Die drei Bereiche haben eigene Ereignisse, damit der Satz halbwegs zum Anlass passt. Ein Klick auf „Neue Ausrede" würfelt neu.
Das Ganze ist als Spielerei gedacht und funktioniert im Ernstfall vermutlich schlechter als die Wahrheit — die hat den unschlagbaren Vorteil, dass man sie sich nicht merken muss. Interessant ist der Baukasten aber aus einem anderen Grund: Er zeigt, wie schnell aus wenigen Bausteinen viele Kombinationen werden. Aus dreimal zwölf Einträgen werden 1.728 Sätze; verdoppelt man jede Liste auf 24, sind es bereits 13.824 — achtmal so viele bei nur doppeltem Material. Dieselbe Rechnung steckt hinter der Stärke von Passwörtern.
Verwandtes im Archiv: der Fantasienamen-Generator baut nach demselben Prinzip Kunstwörter, der Blindtext-Generator ganze Absätze, und Scherzfragen und Witze des Tages liefern fertige Pointen.
So funktioniert das Script
Ein Baukasten-Generator ist eines der dankbarsten kleinen Programme: Der Code bleibt kurz, und der ganze Reiz steckt in den Wortlisten.
function zufall(liste) {
return liste[Math.floor(Math.random() * liste.length)];
}
Diese drei Zeilen sind das Herz. Math.random() liefert eine Zahl zwischen 0 und (knapp unter) 1. Mal die Listenlänge ergibt einen Wert zwischen 0 und knapp unter der Länge; Math.floor rundet ab und macht daraus einen gültigen Index. Dass Math.random() die 1 nie erreicht, ist dabei entscheidend — sonst entstünde gelegentlich ein Index hinter dem letzten Eintrag.
const ereignisse = {
arbeit: [ … ],
schule: [ … ],
treffen: [ … ]
};
…
const liste = ereignisse[anlass];
Die drei Anlässe liegen als benannte Listen in einem Objekt, und das Auswahlfeld liefert direkt den Namen. Deshalb braucht es keine if-Kette — die Auswahl ist der Zugriff. Ein vierter Anlass wäre ein weiterer Eintrag hier und eine Zeile im Auswahlfeld.
const moeglichkeiten = einleitungen.length * liste.length * folgen.length;
Die Zahl der Möglichkeiten ist das Produkt der Listenlängen — nicht ihre Summe. Bei zwölf, zwölf und zwölf Bausteinen sind das 1.728 Sätze. Verdoppelt man jede Liste auf 24, sind es schon 13.824, also achtmal so viele. Genau diese Multiplikation macht Baukästen so ergiebig: Ein wenig mehr Material bringt sehr viel mehr Ergebnisse.
Dieselbe Rechnung steckt hinter der Stärke von Passwörtern: Jedes zusätzliche Zeichen multipliziert die Möglichkeiten, statt sie nur zu erhöhen — nachzurechnen im Passwort-Stärke-Prüfer.
saetze.push("· " + zufall(einleitungen) + " " + zufall(liste) + " " + zufall(folgen));
Damit die Sätze grammatisch aufgehen, sind die Bausteine bewusst so formuliert, dass sie in jeder Kombination passen: Die Einleitungen enden offen, die Ereignisse sind vollständige Teilsätze im Präteritum oder Perfekt, die Folgen beginnen mit einem Bindewort. Diese Sorgfalt beim Schreiben der Listen ist die eigentliche Arbeit — der Code ist in fünf Minuten fertig.
Zum Anpassen: Wollt ihr, dass sich Ausreden nicht wiederholen, merkt ihr euch die zuletzt gezogenen Bausteine und würfelt neu, solange einer davon noch einmal käme. Für einen vierten Baustein — etwa einen Zusatz wie „übrigens zum zweiten Mal in diesem Monat" — genügt eine weitere Liste und ein weiterer Aufruf von zufall.
Script für die eigene Homepage
Kopiert euch den kompletten Code und fügt ihn an der Stelle eurer Seite ein, an der das Script erscheinen soll. Er läuft ohne weitere Dateien und ohne fremde Server.