Análise de Palavras
Parte da seção Lógica e Fluxo do Journey de Ruby da Coddy. Lição 54 de 56.
Um desafio independente que utiliza strings, hashes, Hash.new(0) e métodos Enumerable tudo de uma vez.
Desafio
MédioLeia uma única linha de entrada, uma frase. Analise-a e imprima três linhas:
- O número de palavras únicas (insensível a maiúsculas e minúsculas, com pontuação removida). Palavras repetidas contam apenas uma vez cada.
- As palavras repetidas (aquelas que aparecem mais de uma vez), ordenadas alfabeticamente, unidas por
,. Se não houver nenhuma, imprima(none). - As palavras palíndromas, palavras que são lidas da mesma forma de frente para trás e de trás para frente, com comprimento ≥ 2, ordenadas alfabeticamente, unidas por
,. Se não houver nenhuma, imprima(none).
Remova os caracteres .,!?:;"() de cada palavra antes do processamento. Converta tudo para minúsculas para comparação.
Para a entrada Madam saw a racecar. Dad said hello hello to mom., a saída é:
9
hello
dad, madam, mom, racecarExperimente você mesmo
input = gets.chomp
# TODO: dividir, remover pontuação, converter para minúsculas e imprimir:
# contagem única, palavras repetidas, palíndromos (comprimento >= 2)
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica e Fluxo
1Strings em Profundidade
Visão Geral dos Métodos de StringInterpolação de StringsPercorrendo StringsDividir e UnirRecapitulação - String Weaver4Blocos, Procs e Lambdas
O que é um Bloco?do..end vs ChavesA Palavra-chave yieldParâmetros de BlocoProcs e LambdasRevisão - Iterador Personalizado7Hashes - Parte 2
Hash.new com Valores PadrãoIterando sobre HashesHashes AninhadosMesclando e TransformandoRecapitulação - Contador de Frequência10Projeto - Registros de Alunos
Visão Geral do ProjetoAdicionar Aluno2Intervalos
O que é um intervalo?Métodos de intervaloIntervalos em Case / WhenRevisão - Prática com intervalos5Potência do Enumerable
Select e RejectEncadeando MapReduce / Injectcount, all?, any?, none?group_by e partitionsort_by, min_by, max_byRecapitulação - Pipeline de DadosPratique por conta própria: Compilador de Ruby online