Menu
Coddy logo textTech

Wort-Analyse

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.

challenge icon

Aufgabe

Mittel

Lies eine einzelne Eingabezeile, einen Satz. Analysiere diesen und gib drei Zeilen aus:

  1. Die Anzahl der einzigartigen Wörter (Groß-/Kleinschreibung wird ignoriert, Satzzeichen werden entfernt). Wiederholte Wörter werden jeweils nur einmal gezählt.
  2. Die wiederholten Wörter (die mehr als einmal vorkommen), alphabetisch sortiert und mit , verbunden. Wenn keine vorhanden sind, gib (none) aus.
  3. 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, racecar

Spickzettel

Verwenden Sie Hash.new(0), um Wortfrequenzen zu zählen, und nutzen Sie dann Enumerable-Methoden zum Filtern und Sortieren:

words = line.gsub(/[.,!?:;"()]/, '').downcase.split
freq = Hash.new(0)
words.each { |w| freq[w] += 1 }

unique = freq.keys
repeated = freq.select { |_, v| v > 1 }.keys.sort
palindromes = unique.select { |w| w.length >= 2 && w == w.reverse }.sort

Geben Sie (none) aus, wenn eine Sammlung leer ist:

puts repeated.empty? ? "(none)" : repeated.join(", ")

Probier es selbst

input = gets.chomp

# TODO: aufteilen, Satzzeichen entfernen, kleinschreiben, dann ausgeben:
#   Anzahl der eindeutigen Wörter, wiederholte Wörter, Palindrome (Länge >= 2)
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Programmfluss