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 intentos. Puntúa los intentos y resume el rango.
Lee dos líneas:
- Dos enteros separados por un espacio:
startyend_value - Una lista de intentos enteros separados por comas
Usando el rango start..end_value, imprime:
Hit: <n>, dondenes cuántos intentos están dentro del rango (usainclude?)Span: <n>, dondenes elsizedel rangoMultiples of 3 sum: <n>, dondenes la suma de todos los múltiplos de 3 del rango (usastepempezando por el primer múltiplo de 3 igual o posterior astart)
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(Aciertos: 3, 5, 7. Múltiplos de 3 en 1..10: 3+6+9 = 18.)
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
1Cadenas en profundidad
Descripción general de los métodos de cadenasInterpolación de cadenasIteración sobre cadenasSeparar y unirRepaso: Tejedor de cadenas4Bloques, Procs y Lambdas
¿Qué es un bloque?do..end frente a llavesLa palabra clave yieldParámetros de bloqueProcs y LambdasRepaso: iterador personalizado7Hashes Parte 2
Hash.new con valores predeterminadosIteración de hashesHashes anidadosCombinación y transformaciónRepaso: contador de frecuencias10Proyecto - Registros de estudiantes
Descripción general del proyectoAgregar estudiante5Potencia Enumerable
Select y RejectEncadenamiento de MapReduce / Injectcount, all?, any?, none?group_by y partitionsort_by, min_by, max_byRepaso: canalización de datosPractica por tu cuenta: Compilador de Ruby online