Menu
Coddy logo textTech

Filter

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

filter prend une closure de prédicat et renvoie un nouveau tableau contenant uniquement les éléments pour lesquels la closure a renvoyé true.

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

Le résultat conserve l'ordre d'origine. Le type du résultat correspond au type d'entrée, aucune transformation n'a lieu, seulement une sélection.

filter s'enchaîne naturellement avec map :

let big = nums
    .filter { $0 > 2 }
    .map { $0 * $0 }
print(big)                   // [9, 16, 25, 36]

Lisez chaque chaîne de haut en bas, tout comme un pipeline. Chaque étape produit un nouveau tableau ; rien ne modifie l'original.

challenge icon

Défi

Facile

Lisez deux lignes d'entrée :

  1. Une liste d'entiers séparés par des virgules
  2. Un entier min

Affichez, sur des lignes séparées :

  1. Les entiers strictement supérieurs à min, joints par , (ou vide si aucun ne correspond)
  2. Les carrés des entiers correspondants, joints par ,
  3. Le nombre d'entiers correspondants

Utilisez filter + map en chaîne. Ne faites pas deux itérations sur l'entrée.

Pour l'entrée 1,5,2,8,3,7 sur la ligne 1 et 4 sur la ligne 2, la sortie est :

5,8,7
25,64,49
3

Aide-mémoire

Utilisez filter pour sélectionner les éléments correspondant à une condition :

let evens = [1,2,3,4].filter { $0 % 2 == 0 } // [2, 4]

Enchaînez filter avec map sous forme de pipeline :

let result = nums
    .filter { $0 > 2 }
    .map { $0 * $0 }  // [9, 16, 25, 36]

Chaque étape renvoie un nouveau tableau ; l'original reste inchangé. L'ordre est préservé.

Essayez vous-même

let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }
let min = Int(readLine()!)!

// TODO: filtrer > min une fois, puis mapper vers les carrés ; imprimer les deux, puis compter
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