Menu
Coddy logo textTech

Intersection d'ensembles

Fait partie de la section Logique & Flux du Journey Dart de Coddy — leçon 23 sur 65.

Lorsque vous avez besoin de trouver des éléments qui existent dans chacune de deux collections Set, la méthode intersection() fournit la solution parfaite. Cette opération identifie les éléments communs entre deux ensembles, créant un nouvel ensemble qui contient uniquement les éléments qui apparaissent dans les deux collections d'origine.

La méthode intersection() fonctionne en comparant les éléments de deux ensembles et en renvoyant un nouvel ensemble contenant uniquement les valeurs partagées. Comme les autres opérations sur les ensembles, elle gère automatiquement l'unicité, de sorte que chaque élément commun n'apparaît qu'une seule fois dans le résultat.

Set<String> aliceFriends = {'Bob', 'Charlie', 'Diana', 'Eve'};
Set<String> bobFriends = {'Alice', 'Charlie', 'Frank', 'Diana'};

Set<String> mutualFriends = aliceFriends.intersection(bobFriends);
print(mutualFriends);  // {Charlie, Diana}

Cette opération est particulièrement utile pour trouver des chevauchements dans les données, tels que des intérêts communs entre les utilisateurs, des compétences partagées au sein des équipes ou des critères de correspondance dans les opérations de filtrage. L'intersection vous aide à identifier ce que deux collections ont en commun, ce qui la rend précieuse pour les tâches de comparaison et d'analyse.

challenge icon

Défi

Facile

Créez un programme qui gère une plateforme de médias sociaux en trouvant les connexions mutuelles entre deux utilisateurs. Votre programme doit :

  1. Lire une chaîne de caractères représentant le nom du premier utilisateur
  2. Lire plusieurs chaînes de caractères représentant les connexions du premier utilisateur (la saisie se terminera lorsque vous recevrez "user1_done")
  3. Lire une chaîne de caractères représentant le nom du deuxième utilisateur
  4. Lire plusieurs chaînes de caractères représentant les connexions du deuxième utilisateur (la saisie se terminera lorsque vous recevrez "user2_done")
  5. Créer deux Sets distincts pour stocker les connexions de chaque utilisateur
  6. Utiliser la méthode intersection() pour trouver les connexions mutuelles entre les deux utilisateurs
  7. Afficher les résultats de l'analyse de connexion dans le format exact indiqué ci-dessous

Par exemple, si le premier utilisateur est "Alice" avec les connexions "Bob", "Charlie", "Diana", "Eve", et que le deuxième utilisateur est "Bob" avec les connexions "Alice", "Charlie", "Frank", "Diana", votre programme doit afficher :

User Analysis: Finding mutual connections
Alice's connections: {Bob, Charlie, Diana, Eve}
Bob's connections: {Alice, Charlie, Frank, Diana}
Mutual connections: {Charlie, Diana}
Total mutual connections: 2
Connection strength: Strong (2+ mutual connections)
Status: Users have mutual connections

Si le premier utilisateur est "Sarah" avec les connexions "John", "Mike", "Lisa", et que le deuxième utilisateur est "Tom" avec les connexions "Emma", "David", "Kate", votre programme doit afficher :

User Analysis: Finding mutual connections
Sarah's connections: {John, Mike, Lisa}
Tom's connections: {Emma, David, Kate}
Mutual connections: {}
Total mutual connections: 0
Connection strength: None (no mutual connections)
Status: Users have no mutual connections

Si le premier utilisateur est "Emma" avec les connexions "Alex", "Jordan", "Taylor", "Morgan", et que le deuxième utilisateur est "Jordan" avec les connexions "Emma", "Taylor", "Casey", votre programme doit afficher :

User Analysis: Finding mutual connections
Emma's connections: {Alex, Jordan, Taylor, Morgan}
Jordan's connections: {Emma, Taylor, Casey}
Mutual connections: {Taylor}
Total mutual connections: 1
Connection strength: Weak (1 mutual connection)
Status: Users have mutual connections

Votre programme doit utiliser la méthode intersection() pour trouver les connexions communes entre les deux Sets d'utilisateurs. Déterminez la force de la connexion en fonction du nombre de connexions mutuelles : "None" pour 0 connexion mutuelle, "Weak" pour exactement 1 connexion mutuelle, et "Strong" pour 2 connexions mutuelles ou plus. S'il y a des connexions mutuelles, affichez "Users have mutual connections" comme statut, sinon affichez "Users have no mutual connections".

Aide-mémoire

La méthode intersection() trouve les éléments communs entre deux ensembles, retournant un nouvel ensemble contenant uniquement les valeurs partagées :

Set<String> aliceFriends = {'Bob', 'Charlie', 'Diana', 'Eve'};
Set<String> bobFriends = {'Alice', 'Charlie', 'Frank', 'Diana'};

Set<String> mutualFriends = aliceFriends.intersection(bobFriends);
print(mutualFriends);  // {Charlie, Diana}

Cette opération gère automatiquement l'unicité et est utile pour trouver des chevauchements dans les données, tels que des intérêts communs, des compétences partagées ou des critères de correspondance dans les opérations de filtrage.

Essayez vous-même

import 'dart:io';

void main() {
  // Lire le nom du premier utilisateur
  String? user1Name = stdin.readLineSync();
  
  // Lire les connexions du premier utilisateur jusqu'à "user1_done"
  Set<String> user1Connections = <String>{};
  String? connection;
  while ((connection = stdin.readLineSync()) != "user1_done") {
    if (connection != null) {
      user1Connections.add(connection);
    }
  }
  
  // Lire le nom du deuxième utilisateur
  String? user2Name = stdin.readLineSync();
  
  // Lire les connexions du deuxième utilisateur jusqu'à "user2_done"
  Set<String> user2Connections = <String>{};
  while ((connection = stdin.readLineSync()) != "user2_done") {
    if (connection != null) {
      user2Connections.add(connection);
    }
  }
  
  // TODO: Écrivez votre code ci-dessous
  // Trouver les connexions mutuelles en utilisant la méthode intersection()
  // Déterminer la force de la connexion en fonction du nombre de connexions mutuelles
  // Générer le format de sortie requis
  
  // Afficher les résultats de l'analyse
  print("User Analysis: Finding mutual connections");
  // Ajoutez vos instructions de sortie ici
}
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 & Flux