Menu
Coddy logo textTech

Méthodes d'intervalle

Fait partie de la section Logique et Flux du Journey Swift de Coddy — leçon 9 sur 56.

Les Ranges sont de véritables Collections, ils disposent donc de la même boîte à outils que celle que vous utilisez sur les tableaux.

contains, count, first et last fonctionnent tous directement :

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

La plupart des méthodes de tableau que vous avez utilisées fonctionnent également. filter retourne un tableau car le résultat du filtrage d'une plage n'est pas lui-même une plage :

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

De même pour reduce : les plages en disposent, et vous l'utiliserez pour effectuer rapidement des sommes et des produits.

challenge icon

Défi

Facile

Lisez deux entiers (deux lignes) : n et target. Traitez l'intervalle fermé 1...n comme votre ensemble de données.

Affichez trois lignes :

  1. true quand target est dans l'intervalle, sinon false
  2. Le produit de chaque valeur de l'intervalle (n! : factorielle). Utilisez reduce.
  3. Les valeurs de l'intervalle qui sont des multiples de 3, jointes par , (ou une ligne vide si aucune ne correspond). Utilisez filter.

Pour l'entrée 5 / 3, la sortie est :

true
120
3

Aide-mémoire

Les intervalles se conforment à Collection et prennent en charge les méthodes de collection courantes :

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

filter sur un intervalle retourne un tableau :

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

reduce fonctionne directement sur les intervalles :

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

Essayez vous-même

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

// TODO: contains(target), produit via reduce, multiples de 3 via filter
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et Flux