Würfeln mit Armin

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
Benutzeravatar
__blackjack__
User
Beiträge: 14428
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

In de.comp.os.unix.programming (jaaa, Usenet gibt's noch) hat jemand einen Algorithmus den er auf Facebook gefunden hat, in Perl umgesetzt, den ich mal nach Python portiert habe. Das Programm spuckt Laschet-Aussagen zu Corona aus, wie „Was wir jetzt brauchen ist eine sechsmalige optionale Impfmatrix bis zur Bundestagswahl zur sofortigen Beschönigung der dritten Welle.“ oder „Was wir jetzt brauchen ist eine zweiwöchige softe Brückenmaßnahme bis nach den Abiturprüfungen zur willkürlichen Steigerung der Wahlprognosen.“

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()
“Design patterns are kind of like sarcasm: hard to use well, not always appropriate,
and disgustingly bad when applied to problems they are not meant to solve.” — ajones in c.l.python
nezzcarth
User
Beiträge: 1812
Registriert: Samstag 16. April 2011, 12:47

Interessant. :) Kleiner Verbesserungsvorschlag: Der korrekte Fachbegriff für das grammatische Geschlecht ist Genus bzw. Gender. Sexus/Sex bzw. sich auf das biologische Geschlecht.
Benutzeravatar
__blackjack__
User
Beiträge: 14428
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Kann ich jetzt leider nicht auf's Original schieben, denn da hiess die Funktion `mw()` und die Gruppe war nicht benannt, hiess also `$2`. 🙂
“Design patterns are kind of like sarcasm: hard to use well, not always appropriate,
and disgustingly bad when applied to problems they are not meant to solve.” — ajones in c.l.python
Antworten