Kleine Programmieraufgaben: Vergleichskombinator (und Wikingernamen)

(3 Kommentare.)

Kleines Java-Projekt für die Schule mal: Man schreibt eine Reihe von Vergleichen auf, hier waren es sechs Stück, die alle ein ähnliches Format haben: „A ist/sind/riecht usw. wie B“. Dann schreibt man ein Programm, das sich die linke Hälfte eines zufälligen solchen Satzes geben lässt, kombiniert mit der rechten Hälfte eines zufälligen solchen Satzes. (Für Fortgeschrittene auch: „A ist/sind/riecht usw, wie B“, also mit Komma, wobei B dann halt ein Nebensatz ist, was kleinere Schwierigkeiten macht.)

Heraus kommt dabei Poetisches:

Daten sind wie der Rachen eines Löwen.
Meine Liebe ist wie der Rachen eines Löwen.
Daten sind wie der Rachen eines Löwen.
Mein Gedächtnis ist wie das Müllproblem der Informationsgesellschaft.
Meine Liebe ist, wie das Taj Mahal bei Mondschein aussieht.
Daten sind wie eine rote Rose.
Sie roch so wie der Rachen eines Löwen.
Sie roch so wie der Louis Armstrong der Science Fiction.
Daten sind wie das Müllproblem der Informationsgesellschaft.
Daten sind wie das Müllproblem der Informationsgesellschaft.
Sie roch so wie der Louis Armstrong der Science Fiction.
Mein Gedächtnis ist, wie das Taj Mahal bei Mondschein aussieht.
Daten sind wie der Louis Armstrong der Science Fiction.
Mein Gedächtnis ist wie der Rachen eines Löwen.
Mein Gedächtnis ist wie eine rote Rose.
Daten sind wie eine rote Rose.
Sie roch so wie der Louis Armstrong der Science Fiction.
Daten sind wie der Louis Armstrong der Science Fiction.
Daten sind wie das Öl des 21. Jahrhunderts.
Ray Bradbury ist wie das Müllproblem der Informationsgesellschaft.

Oulipo hat das bestimmt auch schon gemacht. Und es gibt den sprichwortrekombinator.de für Sprichwörter.

Schwieriger wird es bei Metaphern ohne „wie“. Dann geht das gar nicht automatisiert:

Ray Bradbury ist der Louis Armstrong der Science Fiction.

Ich habe das so gehalten, dass ich manuell ein „wie“ beim Ursprungssatz ergänzt habe, um einen Vergleich daraus zu machen. Oder man fügt manuell ein Trennzeichen ein, also etwa: „Ray Bradbury ist | der Louis Armstrong der Science Fiction.“ Der potentielle Verzicht auf das „wie“ macht dann aber bei Vergleichssätzen („, wie das Taj Mahal bei Mondschein aussieht“) Schwierigkeiten, also vielleicht sollte man die Sätze weglassen.

Man kann Programmieren damit üben, insbesondere String-Methoden, und dabei auch etwas über bildliche Sprache lernen.

*

Eine andere Aufgabe ist die mit den Wikingernamen. Darauf bin nicht ich gekommen. Es stammt aus irgendeinem Informatikbuch, denke ich, im Web habe ich nichts mehr gefunden. Bei dieser Aufgabe bestehen Wikingernamen immer aus den Wikingersilben:

    hra, krim, rolf, rog, bar, ha, kon, wulf, her, gard, brun, hild

Ein Wikingername besteht aus drei solchen Silben, und der erste Buchstabe des Wikingernamen wird natürlich groß geschrieben. Aufgabe: Schreibe ein Programm, das zufällige Wikingernamen generiert! Das mit dem Großbuchstaben ist in Java das größte Problem. Die Wikinger heißen dann zum Beispiel so:

Konhrawulf
Roggardrolf
Roghildha
Krimrogkon
Konkrimnar
Brunkongard
Rolfrolfwulf
Rolfhanar

*

Weitere Aufgaben:

  • Dein Name als Drache: „[Your name backwards] the [current mood], >Hoarder of [last meal] and [what’s to the left of you]“ -> „Einalem the tired, Hoarder of Beef and Fridge“
  • Jede Art von Phrasengenerator: Attribut-Adjektiv + Partizip-Adjektiv + Subjekt + Genitiv-Attribut + Partizipalattribut. Aber da geht es schon bald in die Grammatikfeinheiten.

Beitrag veröffentlicht am

in

Kommentare: 3

Schlagwörter:

Kommentare

3 Antworten zu „Kleine Programmieraufgaben: Vergleichskombinator (und Wikingernamen)“

  1. Aginor

    Ach, mal wieder was zum Thema Programmieren, sehr schön!

    Das erste Programm ist leider auf Deutsch in der Tat recht schwer, wegen der Grammatik. Aber spaßig!

    Verstehe beim zweiten aber nicht warum der Großbuchstaben so ein großes Problem ist.
    Man muss ja nichtmal mehr wie früher per substring-Methode aufteilen, toUpperCase anwenden und dann wieder konkatenieren, sondern es gibt in einer der Klassen (commons-lang?) eine Methode „capitalize“.

    Wenn Sie Freude an solchen Generatoren haben:
    https://www.fantasynamegenerators.com/
    hat buchstäblich hunderte davon. Ein nettes Werkzeug das ich gerne für D&D benutze.

    Gruß
    Aginor

  2. StringUtils hat eine Methode capitalize, und in anderen Klassen gibt es wahrscheinlich ähnliche. Aber ja, genau das meinte ich. Für die SuS ist das verwenden von Klassenmethoden etwas, das sie noch nicht verstehen; in der einfachen Objektorientierung der Schule umgeht man alles, was static ist. Also importieren, das geht, muss man ihnen auch irgendwann beibringen. Oder, am besten, eine eigene Methode capitalize schreiben und verwenden. Alle anderen Methoden bringt die Klasse String halt mit, das ist dann einfach.

  3. Aginor

    Es macht durchaus Sinn, erstmal von Grund auf (größtenteils prozedural) zu beginnen.
    Java treibt es aber auch mit der Objektorientierung ganz schön auf die Spitze. Die Lernkurve ist schon steil wenn man das praktisch gleichzeitig alles lernen muss.

    Andererseits ist ja aber gerade das nicht neu erfinden des Rades sondern importieren einer funktionierenden (und hoffentlich ordentlich dokumentierten) Bibliothek einer der Grundbausteine moderner Programmierung. Wichtig ist es schon…
    Aber es sprengt in der Schule den Rahmen schätze ich. Selbst im Studium tat es das für viele meiner Kommilitonen. Und man verbringt viel Zeit damit, in Code herumzusuchen den man nicht versteht und/oder gar nicht Teil des eigenen Programms ist.

    Ich sitze da immer ein bisschen zwischen den Stühlen. Einerseits ist es gut dass die SuS eine objektorientierte Hochsprache lernen, andererseits hemmt es ein bisschen den Einstieg, und man ist dann schockiert wenn man später einer Sprache begegnet, die Objektorientierung nicht oder nur teilweise nutzt.

    Gruß
    Aginor

  4. Ich würde gerne erst einmal weniger objektorientiert arbeiten. Wenn dann so Sachen herauskommen wie in den Workshops zu Python-3-D-Grafik, an denen ich mal beteiligt war (nämlich: beeindruckende Ergebnisse mit ellenlangem und völlig unverständlichem Code), dann ist das Bedürfnis nach Objektorientierung vielleicht größer.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert