Menu
Coddy logo textTech

Métodos de Intervalo

Parte da seção Lógica e Fluxo do Journey de Swift da Coddy — lição 9 de 56.

Intervalos são Collections reais, então eles vêm com a mesma caixa de ferramentas que você usa em arrays.

contains, count, first e last todos funcionam diretamente:

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

A maioria dos métodos de array que você já usou também funciona. filter retorna um array porque o resultado da filtragem de um intervalo não é, por si só, um intervalo:

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

O mesmo vale para o reduce: ranges o possuem, e você contará com ele para somas e produtos rápidos.

challenge icon

Desafio

Fácil

Leia dois números inteiros (duas linhas): n e target. Trate o intervalo fechado 1...n como seu conjunto de dados.

Imprima três linhas:

  1. true quando target estiver no intervalo, caso contrário false
  2. O produto de cada valor no intervalo (n!: fatorial). Use reduce.
  3. Os valores no intervalo que são múltiplos de 3, unidos com , (ou uma linha vazia quando nenhum se qualificar). Use filter.

Para a entrada 5 / 3, a saída é:

true
120
3

Folha de consulta

Ranges estão em conformidade com Collection e suportam métodos comuns de coleção:

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

filter em um range retorna um array:

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

reduce funciona diretamente em ranges:

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

Experimente você mesmo

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

// TODO: contains(target), produto via reduce, múltiplos de 3 via filter
quiz iconTeste seus conhecimentos

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