Wortanalysen
Teil des Abschnitts Logik & Programmfluss der Ruby-Journey von Coddy. Lektion 54 von 56.
Eine eigenständige Herausforderung, die Strings, Hashes, Hash.new(0) und Enumerable-Methoden gleichzeitig beansprucht.
Aufgabe
MittelLies eine einzelne Eingabezeile, einen Satz. Analysiere diesen und gib drei Zeilen aus:
- Die Anzahl der einzigartigen Wörter (Groß-/Kleinschreibung wird ignoriert, Satzzeichen werden entfernt). Wiederholte Wörter werden jeweils nur einmal gezählt.
- Die wiederholten Wörter (die mehr als einmal vorkommen), alphabetisch sortiert und mit
,verbunden. Wenn keine vorhanden sind, gib(none)aus. - Die Palindrom-Wörter, also Wörter, die vorwärts und rückwärts gleich gelesen werden, Länge ≥ 2, alphabetisch sortiert und mit
,verbunden. Wenn keine vorhanden sind, gib(none)aus.
Entferne die Zeichen .,!?:;"() von jedem Wort vor der Verarbeitung. Wandle alles für den Vergleich in Kleinbuchstaben um.
Für die Eingabe Madam saw a racecar. Dad said hello hello to mom. lautet die Ausgabe:
9
hello
dad, madam, mom, racecarProbier es selbst
input = gets.chomp
# TODO: aufteilen, Satzzeichen entfernen, kleinschreiben, dann ausgeben:
# Anzahl der eindeutigen Wörter, wiederholte Wörter, Palindrome (Länge >= 2)
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Programmfluss
1Strings im Detail
Überblick über String-MethodenString-InterpolationStrings durchlaufenSplitten und VerbindenRückblick – String Weaver4Blocks, Procs & Lambdas
Was ist ein Block?do..end vs. geschweifte KlammernDas Schlüsselwort yieldBlock-ParameterProcs und LambdasRückblick – Benutzerdefinierter Iterator2Bereiche
Was ist ein Bereich?BereichsmethodenBereiche in Case / WhenWiederholung – Übung zu Bereichen5Das Enumerable-Kraftpaket
Select und RejectMap verkettenReduce / Injectcount, all?, any?, none?group_by und partitionsort_by, min_by, max_byZusammenfassung – Datenpipeline8Fortgeschrittene Entscheidungsfindung
Case mit Klassen & Regexwhen mit mehreren WertenTernärer OperatorInline-if / unlessRückblick – NotenklassifiziererÜbe selbstständig: Online-Ruby-Compiler