Vom Wechsel menschlicher Sachen nach Quirinus Kuhlmann (1671)

Output

Konzept

Quirinus Kuhlmanns „Der Wechsel menschlicher Sachen" (1671, aus den „Himmlischen Liebesküssen") ist eines der frühesten Beispiele kombinatorischer Dichtung. Kuhlmann, beeinflusst von Athanasius Kirchers „Ars magna sciendi" (1669), organisiert jede Verszeile als Spalte austauschbarer einsilbiger Wörter in semantischen Gegensatzpaaren: Alles ist im Wandel, Freude folgt auf Leid, Krieg auf Frieden.

Die Reimplementierung erweitert die Wortlisten um anachronistische Elemente — Weihnachtskitsch und moderne Waffen kollidieren mit barocker Metaphysik. Bei 12 Zeilen mit je 9–14 Optionen ergeben sich Milliarden möglicher Gedichtvarianten, die alle in Kuhlmanns abschließendem Couplet münden.

Code

Python
JavaScript
import random

zeile1 = ["Christbaum", "Jesus", "Esel", "Dreikönige",
          "Maria", "Hirten", "Geschenke", "Kinderlachen",
          "Lametta", "Tannenbaum", "Konfetti", "Plätzchen"]

zeile2 = ["Granate", "Pistole", "Gewehr", "Schützengraben",
          "Hellebarde", "Axt", "Schwert", "Bogen", "Armbrust"]

zeile3 = ["Leid", "Pein", "Schmach", "Angst", "Krieg",
          "Ach", "Kreuz", "Streit", "Hohn", "Schmerz",
          "Qual", "Tück", "Schimpf", "Spott"]

zeile4 = ["Freud", "Zier", "Ehr", "Trost", "Sieg",
          "Rat", "Nutz", "Fried", "Lohn", "Scherz",
          "Ruh", "Glück", "Glimpf"]

zeile5 = ["Mond", "Glunst", "Rauch", "Gems", "Fisch",
          "Gold", "Perl", "Baum", "Flamm", "Storch",
          "Frosch", "Lamm", "Ochs", "Magen"]

zeile6 = ["Schein", "Stroh", "Dampf", "Berg", "Flut",
          "Glut", "Schaum", "Frucht", "Asch", "Dach",
          "Teich", "Feld", "Wies", "Brot"]

zeile7 = ["Schütz", "Mensch", "Fleiß", "Müh", "Kunst",
          "Spiel", "Schiff", "Mund", "Prinz", "Rach",
          "Sorg", "Geiz", "Treu", "Gott"]

zeile8 = ["Ziel", "Schlaf", "Preis", "Lob", "Gunst",
          "Zank", "Port", "Kuß", "Thron", "Mord",
          "Sarg", "Geld", "Hold"]

zeile9 = ["gut", "stark", "schwer", "recht", "lang",
          "groß", "weiß", "eins", "ja", "Luft",
          "Feur", "hoch", "weit"]

zeile10 = ["bös", "schwach", "leicht", "krumm", "breit",
           "klein", "schwarz", "drei", "nein", "Erd",
           "Flut", "tief", "nah"]

zeile11 = ["Mut", "Lieb", "klug", "Witz", "Geist",
           "Seel", "Freund", "Lust", "Zier", "Ruhm",
           "Fried", "Scherz", "Lob"]

zeile12 = ["Furcht", "Haß", "Trug", "Wein", "Fleisch",
           "Leib", "Feind", "Weh", "Schmach", "Angst",
           "Streit", "Schmerz", "Hohn"]

print(f"Auf {random.choice(zeile1)} und Ochs")
print(f"Folgt {random.choice(zeile2)} und Not.")
print(f"Auf {random.choice(zeile3)} als Spott")
print(f"Will {random.choice(zeile4)} stets tragen.\n")
print(f"Der {random.choice(zeile5)} und Magen")
print(f"Liebt {random.choice(zeile6)} und Brot.")
print(f"Der {random.choice(zeile7)} und Gott")
print(f"Sucht's {random.choice(zeile8)}.\n")
print(f"Was {random.choice(zeile9)} genennt")
print(f"Pflegt {random.choice(zeile10)} zu meiden.")
print(f"Auch {random.choice(zeile11)} muß scheiden\n")
print(f"Wo {random.choice(zeile12)} schon rennt.")
print(f"Alles wechselt; alles liebet;")
print(f"alles scheinet was zu hassen:")
print(f"Wer nur diesem nach wird denken;")
print(f"muß der Menschen Weisheit fassen.")
const ZEILEN = [
  ["Christbaum","Jesus","Esel","Dreikönige","Maria",
   "Hirten","Geschenke","Kinderlachen","Lametta",
   "Tannenbaum","Konfetti","Plätzchen"],
  ["Granate","Pistole","Gewehr","Schützengraben",
   "Hellebarde","Axt","Schwert","Bogen","Armbrust"],
  ["Leid","Pein","Schmach","Angst","Krieg","Ach",
   "Kreuz","Streit","Hohn","Schmerz","Qual",
   "Tück","Schimpf","Spott"],
  ["Freud","Zier","Ehr","Trost","Sieg","Rat",
   "Nutz","Fried","Lohn","Scherz","Ruh",
   "Glück","Glimpf"],
  ["Mond","Glunst","Rauch","Gems","Fisch","Gold",
   "Perl","Baum","Flamm","Storch","Frosch",
   "Lamm","Ochs","Magen"],
  ["Schein","Stroh","Dampf","Berg","Flut","Glut",
   "Schaum","Frucht","Asch","Dach","Teich",
   "Feld","Wies","Brot"],
  ["Schütz","Mensch","Fleiß","Müh","Kunst","Spiel",
   "Schiff","Mund","Prinz","Rach","Sorg",
   "Geiz","Treu","Gott"],
  ["Ziel","Schlaf","Preis","Lob","Gunst","Zank",
   "Port","Kuß","Thron","Mord","Sarg",
   "Geld","Hold"],
  ["gut","stark","schwer","recht","lang","groß",
   "weiß","eins","ja","Luft","Feur","hoch","weit"],
  ["bös","schwach","leicht","krumm","breit","klein",
   "schwarz","drei","nein","Erd","Flut","tief","nah"],
  ["Mut","Lieb","klug","Witz","Geist","Seel",
   "Freund","Lust","Zier","Ruhm","Fried",
   "Scherz","Lob"],
  ["Furcht","Haß","Trug","Wein","Fleisch","Leib",
   "Feind","Weh","Schmach","Angst","Streit",
   "Schmerz","Hohn"]
];

const TEMPLATES = [
  (w) => `Auf ${w} und Ochs`,
  (w) => `Folgt ${w} und Not.`,
  (w) => `Auf ${w} als Spott`,
  (w) => `Will ${w} stets tragen.`,
  (w) => `Der ${w} und Magen`,
  (w) => `Liebt ${w} und Brot.`,
  (w) => `Der ${w} und Gott`,
  (w) => `Sucht's ${w}.`,
  (w) => `Was ${w} genennt`,
  (w) => `Pflegt ${w} zu meiden.`,
  (w) => `Auch ${w} muß scheiden`,
  (w) => `Wo ${w} schon rennt.`
];

const CODA = [
  'Alles wechselt; alles liebet;',
  'alles scheinet was zu hassen:',
  'Wer nur diesem nach wird denken;',
  'muß der Menschen Weisheit fassen.'
];

function pick(arr) {
  return arr[Math.floor(Math.random() * arr.length)];
}

function generate() {
  const lines = TEMPLATES.map((fn, i) => fn(pick(ZEILEN[i])));
  return [...lines, '', ...CODA];
}