Recapitulação - Contador de Frequência
Parte da seção Lógica e Fluxo do Journey de Ruby da Coddy — lição 37 de 56.
Reúna hashes com valores padrão, iteração e ordenação dos capítulos anteriores em um desafio clássico: um relatório de frequência de palavras.
Desafio
MédioLeia uma única linha de entrada, uma frase. Construa um Hash.new(0) mapeando cada palavra (dividida por espaços em branco, em letras minúsculas) para sua frequência.
Em seguida, imprima:
- O número total de palavras únicas
- Uma linha por palavra em ordem decrescente de frequência (empates resolvidos em ordem alfabética pela palavra) neste formato:
<word>: <count>
Para a entrada the quick brown fox jumps over the lazy dog the dog, a saída é:
8
the: 3
dog: 2
brown: 1
fox: 1
jumps: 1
lazy: 1
over: 1
quick: 1Experimente você mesmo
input = gets.chomp
# TODO: construir um Hash.new(0) de palavra → contagem, então imprimir:
# 1) o número de palavras únicas
# 2) entradas ordenadas por contagem decrescente, empates por palavra crescente
Todas as lições de Lógica e Fluxo
1Strings a Fundo
Visão Geral de Métodos de StringInterpolação de StringsIterando sobre StringsSplit e JoinRecapitulação - String Weaver4Blocos, Procs e Lambdas
O que é um Bloco?do..end vs ChavesA palavra-chave yieldParâmetros de BlocoProcs e LambdasRecapitulação - Iterador Customizado7Hashes Parte 2
Hash.new com Valores PadrãoIterando em 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 / WhenRecapitulação - Prática com Intervalos5O Poder do Enumerable
Select e RejectEncadeando o MapReduce / Injectcount, all?, any?, none?group_by e partitionsort_by, min_by, max_byRecapitulação - Data Pipeline