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 10La 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.
Défi
FacileLisez deux entiers (deux lignes) : n et target. Traitez l'intervalle fermé 1...n comme votre ensemble de données.
Affichez trois lignes :
truequandtargetest dans l'intervalle, sinonfalse- Le produit de chaque valeur de l'intervalle (
n!: factorielle). Utilisezreduce. - Les valeurs de l'intervalle qui sont des multiples de
3, jointes par,(ou une ligne vide si aucune ne correspond). Utilisezfilter.
Pour l'entrée 5 / 3, la sortie est :
true
120
3Aide-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! // 10filter 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, +) // 15Essayez 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
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
1Les chaînes de caractères en profondeur
Comptage et indicesCasse et nettoyageRecherche dans les chaînesDécoupage et jointureRemplacement de sous-chaînesRécapitulatif - Vérification du nom d'utilisateur4Ensembles
Création d'ensemblesUnion et intersectionSoustraction et différence symétriqueSous-ensemble et sur-ensembleRécapitulatif - Filtre de tags7Projet - Suivi d'habitudes
Aperçu du projetMarquer comme terminé10Projet - Moteur de quiz
Présentation du projetPoser des questions2Intervalles et Pas
Fermé vs Semi-ouvertLe PasMéthodes d'intervalleIntervalles dans un SwitchRécapitulatif - Grille de calendrier5Fonctions d'ordre supérieur, Partie 1
MapFilterReduceChaînage de map, filter, reduceRécapitulatif - Statistiques de mots