Analisi delle parole
Fa parte della sezione Logica e flusso del percorso Ruby di Coddy. Lezione 54 di 56.
Una sfida indipendente che mette alla prova stringhe, hash, Hash.new(0) e metodi Enumerable tutti insieme.
Sfida
MedioLeggi una singola riga di input, una frase. Analizzala e stampa tre righe:
- Il numero di parole uniche (senza distinzione tra maiuscole e minuscole e senza punteggiatura). Le parole ripetute si contano una sola volta ciascuna.
- Le parole ripetute (quelle che compaiono più di una volta), ordinate alfabeticamente e separate da
,. Se non ce ne sono, stampa(none). - Le parole palindrome, cioè quelle che si leggono allo stesso modo in avanti e all’indietro, di lunghezza ≥ 2, ordinate alfabeticamente e separate da
,. Se non ce ne sono, stampa(none).
Rimuovi i caratteri .,!?:;"() da ogni parola prima di elaborarla. Converti tutto in minuscolo per effettuare il confronto.
Per l’input Madam saw a racecar. Dad said hello hello to mom., l’output è:
9
hello
dad, madam, mom, racecarProvalo tu
input = gets.chomp
# TODO: usa split, rimuovi la punteggiatura, converti in minuscolo, poi stampa:
# numero di parole uniche, parole ripetute, palindromi (lunghezza >= 2)
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Panoramica dei metodi delle stringheInterpolazione di stringheIterare sulle stringheDividere e unireRiepilogo - Tessitore di stringhe4Blocchi, Proc e Lambda
Che cos’è un Block?do..end vs parentesi graffeLa keyword yieldParametri del BlockProc e LambdaRiepilogo - Iteratore personalizzato7Hash in Ruby - Parte 2
Hash.new con valori predefinitiIterare sugli hashHash annidatiUnire e trasformareRipasso - Contatore di frequenza10Progetto - Registri degli studenti
Panoramica del progettoAggiungere uno studente2Intervalli
Che cos'è un intervallo?Metodi degli intervalliIntervalli in Case / WhenRiepilogo - Esercitarsi con gli intervalli5La potenza di Enumerable
Select e RejectConcatenare MapReduce / Injectcount, all?, any?, none?group_by e partitionsort_by, min_by, max_byRiepilogo - Pipeline di datiEsercitati da solo: Compilatore Ruby online