Métodos de Intervalo
Parte da seção Lógica e Fluxo do Journey de Ruby da Coddy — lição 7 de 56.
Intervalos vêm com métodos úteis que evitam que você escreva loops manualmente.
include? verifica se um valor está dentro do intervalo:
range = 1..10
puts range.include?(5) # true
puts range.include?(11) # falsemin, max e size funcionam diretamente em intervalos:
puts (1..10).min # 1
puts (1..10).max # 10
puts (1..10).size # 10step itera sobre o intervalo saltando por uma quantidade fixa, útil quando você não quer todos os valores:
(0..10).step(2) do |n|
puts n
end
# 0, 2, 4, 6, 8, 10E each funciona exatamente como em arrays:
(1..3).each { |n| puts n * n }
# 1
# 4
# 9Desafio
FácilVocê recebe um intervalo inclusivo e uma lista de palpites. Pontue os palpites e resuma o intervalo.
Leia duas linhas:
- Dois números inteiros separados por um espaço:
starteend_value - Uma lista de palpites inteiros separados por vírgula
Usando o intervalo start..end_value, imprima:
Hit: <n>, ondené a quantidade de palpites que estão dentro do intervalo (useinclude?)Span: <n>, ondené osizedo intervaloMultiples of 3 sum: <n>, ondené a soma de cada múltiplo de 3 no intervalo (usestepcomeçando do primeiro múltiplo de 3 em ou apósstart)
Para a entrada 1 10 na primeira linha e 3,5,11,7,-2 na segunda, a saída é:
Hit: 3
Span: 10
Multiples of 3 sum: 18(Hits: 3, 5, 7. Múltiplos de 3 em 1..10: 3+6+9 = 18.)
Folha de consulta
Métodos úteis de Range:
range = 1..10
range.include?(5) # true
range.min # 1
range.max # 10
range.size # 10step itera saltando por uma quantidade fixa:
(0..10).step(2) { |n| puts n }
# 0, 2, 4, 6, 8, 10each funciona exatamente como em arrays:
(1..3).each { |n| puts n * n }Experimente você mesmo
start, end_value = gets.chomp.split.map(&:to_i)
guesses = gets.chomp.split(",").map(&:to_i)
# TODO: Contagem de acertos via include?, Intervalo via size, soma dos múltiplos de 3 via step
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 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