Code: Alles auswählen
#!/usr/bin/env python3
import random
import re
STEPS = [
["Was wir jetzt brauchen ist ein/e"],
["ein-", "zwei-", "drei-", "vier-", "fünf-", "sechs-"],
["tägige/r", "wöchige/r", "monatige/r", "fache/r", "malige/r", "hebige/r"],
[
"harte/r",
"softe/r",
"optionale/r",
"intransparente/r",
"alternativelose/r",
"unumkehrbare/r",
],
["Wellenbrecher-", "Brücken-", "Treppen-", "Wende-", "Impf-", "Ehren-"],
[
"Lockdown:m",
"Stopp:m",
"Maßnahme:w",
"Kampagne:w",
"Sprint:m",
"Matrix:w",
],
["bis"],
[
"zum Sommer",
"auf Weiteres",
"zur Bundestagswahl",
"2030",
"nach den Abiturprüfungen",
"in die Puppen",
],
["zur"],
[
"sofortigen",
"nachhaltigen",
"allmählichen",
"unausweichlichen",
"wirtschaftsschonenden",
"willkürlichen",
],
[
"Senkung",
"Steigerung",
"Beendigung",
"Halbierung",
"Vernichtung",
"Beschönigung",
],
["der"],
[
"Infektionszahlen",
"privaten Treffen",
"Wirtschaftsleistung",
"Wahlprognosen",
"dritten Welle",
"Bundesklanzlerin",
],
]
def concat(parts):
previous_part = ""
for part in parts:
if part.endswith("-"):
previous_part += part[:-1]
else:
if previous_part:
part = previous_part + part.lower()
yield part
previous_part = ""
def fixup_sex(parts):
result = []
indices_to_fix = []
for part in parts:
if re.search(r"\/[er]$", part):
indices_to_fix.append(len(result))
else:
match = re.fullmatch(r"(?P<part>.+):(?P<sex>[mw])", part)
if match:
part = match["part"]
keep = {"m": "r", "w": "e"}[match["sex"]]
for index in indices_to_fix:
part_to_fix = result[index]
result[index] = part_to_fix[:-2] + (
keep if part_to_fix.endswith(keep) else ""
)
indices_to_fix = []
result.append(part)
return result
def main():
print(" ".join(fixup_sex(concat(map(random.choice, STEPS)))), end=".\n")
if __name__ == "__main__":
main()