Analiza słów
Część sekcji Logika i przepływ programu ścieżki Ruby w Coddy. Lekcja 54 z 56.
Samodzielne wyzwanie, które jednocześnie wykorzystuje ciągi znaków, hasze, Hash.new(0) i metody Enumerable.
Wyzwanie
ŚredniWczytaj jeden wiersz danych wejściowych — zdanie. Przeanalizuj je i wypisz trzy wiersze:
- Liczbę unikalnych słów (bez rozróżniania wielkości liter, po usunięciu znaków interpunkcyjnych). Powtórzone słowa liczą się tylko raz.
- Powtórzone słowa (te, które występują więcej niż raz), posortowane alfabetycznie i połączone za pomocą
,. Jeśli ich nie ma, wypisz(none). - Słowa-palindromy, czyli takie, które czytane od przodu i od tyłu brzmią tak samo, o długości ≥ 2, posortowane alfabetycznie i połączone za pomocą
,. Jeśli ich nie ma, wypisz(none).
Przed przetwarzaniem usuń z każdego słowa znaki .,!?:;"(). Przy porównywaniu zamień wszystkie litery na małe.
Dla danych wejściowych Madam saw a racecar. Dad said hello hello to mom. wynikiem jest:
9
hello
dad, madam, mom, racecarSpróbuj swoich sił
input = gets.chomp
# TODO: podziel, usuń interpunkcję, zamień na małe litery, a następnie wypisz:
# liczbę unikalnych słów, powtarzające się słowa, palindromy (długość >= 2)
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Łańcuchy znaków w szczegółach
Przegląd metod łańcuchów znakówInterpolacja łańcuchów znakówIterowanie po łańcuchach znakówDzielenie i łączeniePowtórka – Tkacz łańcuchów znaków4Bloki, procki i lambdy
Czym jest blok?do..end a nawiasy klamroweSłowo kluczowe yieldParametry blokuProcki i lambdyPodsumowanie — własny iterator7Hashe, część 2
Hash.new z wartościami domyślnymiIterowanie po haszachZagnieżdżone haszeŁączenie i przekształcaniePowtórka — licznik częstotliwości10Projekt – ewidencja uczniów
Przegląd projektuDodawanie ucznia5Potęga Enumerable
Select i RejectŁączenie wywołań mapReduce / Injectcount, all?, any?, none?group_by i partitionsort_by, min_by, max_byPodsumowanie — potok danych8Zaawansowane podejmowanie decyzji
case z klasami i wyrażeniami regularnymiwhen z wieloma wartościamiOperator trójargumentowyInline if / unlessPowtórka – klasyfikator ocenPoćwicz samodzielnie: Kompilator Ruby online