Métodos de Rango
Parte de la sección Lógica y flujo del Journey de Ruby de Coddy — lección 7 de 56.
Los rangos vienen con métodos prácticos que te ahorran escribir bucles a mano.
include? comprueba si un valor se encuentra dentro del rango:
range = 1..10
puts range.include?(5) # true
puts range.include?(11) # falsemin, max y size funcionan directamente en rangos:
puts (1..10).min # 1
puts (1..10).max # 10
puts (1..10).size # 10step itera sobre el rango saltando una cantidad fija, lo cual es útil cuando no quieres todos los valores:
(0..10).step(2) do |n|
puts n
end
# 0, 2, 4, 6, 8, 10Y each funciona igual que en los arrays:
(1..3).each { |n| puts n * n }
# 1
# 4
# 9Desafío
FácilSe te proporciona un rango inclusivo y una lista de conjeturas. Califica las conjeturas y resume el rango.
Lee dos líneas:
- Dos enteros separados por un espacio:
startyend_value - Una lista de conjeturas enteras separadas por comas
Usando el rango start..end_value, imprime:
Hit: <n>, dondenes cuántas conjeturas caen dentro del rango (usainclude?)Span: <n>, dondenes elsizedel rangoMultiples of 3 sum: <n>, dondenes la suma de cada múltiplo de 3 en el rango (usastepcomenzando desde el primer múltiplo de 3 en o después destart)
Para la entrada 1 10 en la primera línea y 3,5,11,7,-2 en la segunda, la salida es:
Hit: 3
Span: 10
Multiples of 3 sum: 18(Hits: 3, 5, 7. Múltiplos de 3 en 1..10: 3+6+9 = 18.)
Hoja de referencia
Métodos útiles de Range:
range = 1..10
range.include?(5) # true
range.min # 1
range.max # 10
range.size # 10step itera saltando por una cantidad fija:
(0..10).step(2) { |n| puts n }
# 0, 2, 4, 6, 8, 10each funciona igual que en los arrays:
(1..3).each { |n| puts n * n }Pruébalo tú mismo
start, end_value = gets.chomp.split.map(&:to_i)
guesses = gets.chomp.split(",").map(&:to_i)
# TODO: Conteo de aciertos vía include?, Extensión vía size, suma de los múltiplos de 3 vía step
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y flujo
1Strings en profundidad
Visión general de los métodos de StringInterpolación de StringsIterar sobre StringsSplit y JoinRepaso - String Weaver4Bloques, Procs y Lambdas
¿Qué es un bloque?do..end vs llavesLa palabra clave yieldParámetros de bloqueProcs y LambdasResumen - Iterador personalizado7Hashes Parte 2
Hash.new con valores por defectoIteración de HashesHashes anidadosFusión y transformaciónResumen - Contador de frecuencia10Proyecto - Registros de Estudiantes
Descripción general del proyectoAgregar estudiante5Potencia de Enumerable
Select y RejectEncadenando MapReduce / Injectcount, all?, any?, none?group_by y partitionsort_by, min_by, max_byResumen - Data Pipeline