Menu
Coddy logo textTech

Kelime Analitiği

Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 54 / 56.

Dizeleri, hash'leri, Hash.new(0) yapısını ve Enumerable metotlarını aynı anda kullanan bağımsız bir meydan okuma.

challenge icon

Görev

Orta

Girdi olarak tek bir satır, bir cümle okuyun. Bunu analiz edin ve üç satır yazdırın:

  1. Benzersiz kelimelerin sayısı (büyük/küçük harf duyarsız, noktalama işaretleri temizlenmiş). Tekrarlanan kelimeler birer kez sayılır.
  2. Birden fazla kez geçen tekrarlanan kelimeler, alfabetik olarak sıralanmış ve , ile birleştirilmiş. Hiç yoksa, (none) yazdırın.
  3. Palindrom kelimeler, yani ileri ve geri okunuşu aynı olan kelimeler, uzunluk ≥ 2, alfabetik olarak sıralanmış ve , ile birleştirilmiş. Hiç yoksa, (none) yazdırın.

İşlemeden önce her kelimeden .,!?:;"() karakterlerini temizleyin. Karşılaştırma için her şeyi küçük harfe çevirin.

Madam saw a racecar. Dad said hello hello to mom. girdisi için çıktı şöyledir:

9
hello
dad, madam, mom, racecar

Kopya kağıdı

Kelime frekanslarını saymak için Hash.new(0) kullanın, ardından filtrelemek ve sıralamak için Enumerable metotlarını kullanın:

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

Bir koleksiyon boş olduğunda (none) yazdırın:

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

Kendin dene

input = gets.chomp

# YAPILACAKLAR: ayır, noktalama işaretlerini temizle, küçük harfe çevir, sonra şunları yazdır:
#   benzersiz kelime sayısı, tekrarlanan kelimeler, palindromlar (uzunluk >= 2)
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler