Menu
Coddy logo textTech

Métodos de Rangos

Parte de la sección Lógica y Flujo del Journey de Swift de Coddy — lección 9 de 56.

Los rangos son Collections reales, por lo que vienen con la misma caja de herramientas que usas en los arrays.

contains, count, first y last funcionan todos directamente:

let r = 1...10
print(r.contains(5))            // true
print(r.count)                  // 10
print(r.first!, r.last!)        // 1 10

La mayoría de los métodos de array que has usado también funcionan. filter devuelve un array porque el resultado de filtrar un rango no es en sí mismo un rango:

let evens = (1...10).filter { $0 % 2 == 0 }
print(evens)                    // [2, 4, 6, 8, 10]

Lo mismo ocurre con reduce: los rangos lo tienen, y te apoyarás en él para sumas y productos rápidos.

challenge icon

Desafío

Fácil

Lee dos números enteros (en dos líneas): n y target. Trata el rango cerrado 1...n como tu conjunto de datos.

Imprime tres líneas:

  1. true cuando target esté en el rango, de lo contrario false
  2. El producto de cada valor en el rango (n!: factorial). Usa reduce.
  3. Los valores en el rango que son múltiplos de 3, unidos con , (o una línea vacía cuando ninguno califique). Usa filter.

Para la entrada 5 / 3, la salida es:

true
120
3

Hoja de referencia

Los rangos cumplen con Collection y admiten métodos de colección comunes:

let r = 1...10
r.contains(5)   // true
r.count         // 10
r.first!        // 1
r.last!         // 10

filter en un rango devuelve un arreglo:

let evens = (1...10).filter { $0 % 2 == 0 }
// [2, 4, 6, 8, 10]

reduce funciona directamente en rangos:

let product = (1...5).reduce(1) { $0 * $1 }  // 120
let sum = (1...5).reduce(0, +)               // 15

Pruébalo tú mismo

let n = Int(readLine()!)!
let target = Int(readLine()!)!
let r = 1...n

// TODO: contains(target), producto mediante reduce, múltiplos de 3 mediante filter
quiz iconPonte a prueba

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