Menu
Coddy logo textTech

Récapitulatif - Liste d'invités uniques

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

challenge icon

Défi

Facile

Créez un programme qui gère un système de planification d'événements en analysant les listes d'invités provenant de deux sources d'invitation différentes. Votre programme doit :

  1. Lire une chaîne de caractères en entrée représentant le nom de l'événement
  2. Lire plusieurs chaînes de caractères représentant les invités de la première liste d'invitation (la saisie se terminera lorsque vous recevrez "list1_done")
  3. Lire plusieurs chaînes de caractères représentant les invités de la deuxième liste d'invitation (la saisie se terminera lorsque vous recevrez "list2_done")
  4. Convertir les deux listes d'invités en Sets pour gérer automatiquement les doublons au sein de chaque liste
  5. Utiliser la méthode union() pour trouver tous les invités uniques conviés à l'événement
  6. Utiliser la méthode intersection() pour trouver les invités qui apparaissent sur les deux listes d'invitation
  7. Utiliser la méthode difference() pour trouver les invités qui figurent uniquement sur la première liste d'invitation
  8. Afficher l'analyse de la liste d'invités dans le format exact indiqué ci-dessous

Par exemple, si le nom de l'événement est "Birthday Party", que la première liste contient "Alice", "Bob", "Charlie", "Diana", et que la deuxième liste contient "Bob", "Diana", "Eve", "Frank", votre programme doit afficher :

Event: Birthday Party
First invitation list: {Alice, Bob, Charlie, Diana}
Second invitation list: {Bob, Diana, Eve, Frank}
All unique guests: {Alice, Bob, Charlie, Diana, Eve, Frank}
Guests on both lists: {Bob, Diana}
Guests only on first list: {Alice, Charlie}
Total unique guests: 6
Duplicate invitations: 2
First list only: 2
Status: Guest list analysis completed

Si le nom de l'événement est "Wedding Reception", que la première liste contient "John", "Mary", "Sarah", et que la deuxième liste contient "Tom", "Lisa", "Mike", votre programme doit afficher :

Event: Wedding Reception
First invitation list: {John, Mary, Sarah}
Second invitation list: {Tom, Lisa, Mike}
All unique guests: {John, Mary, Sarah, Tom, Lisa, Mike}
Guests on both lists: {}
Guests only on first list: {John, Mary, Sarah}
Total unique guests: 6
Duplicate invitations: 0
First list only: 3
Status: Guest list analysis completed

Si le nom de l'événement est "Company Meeting", que la première liste contient "Alex", "Jordan", "Taylor", "Morgan", "Alex", et que la deuxième liste contient "Jordan", "Taylor", "Casey", "Jordan", votre programme doit afficher :

Event: Company Meeting
First invitation list: {Alex, Jordan, Taylor, Morgan}
Second invitation list: {Jordan, Taylor, Casey}
All unique guests: {Alex, Jordan, Taylor, Morgan, Casey}
Guests on both lists: {Jordan, Taylor}
Guests only on first list: {Alex, Morgan}
Total unique guests: 5
Duplicate invitations: 2
First list only: 2
Status: Guest list analysis completed

Votre programme doit démontrer les trois opérations sur les ensembles : union() pour combiner tous les invités, intersection() pour trouver les invités apparaissant sur les deux listes, et difference() pour trouver les invités exclusifs à la première liste. Convertissez d'abord les listes d'entrée en Sets pour gérer les doublons au sein des listes individuelles, puis effectuez les opérations sur les ensembles pour analyser la répartition des invités.

Essayez vous-même

import 'dart:io';

void main() {
  // Lire le nom de l'événement
  String? eventName = stdin.readLineSync();
  
  // Lire la première liste d'invitation
  List<String> firstList = [];
  String? input;
  while ((input = stdin.readLineSync()) != "list1_done") {
    if (input != null) {
      firstList.add(input);
    }
  }
  
  // Lire la deuxième liste d'invitation
  List<String> secondList = [];
  while ((input = stdin.readLineSync()) != "list2_done") {
    if (input != null) {
      secondList.add(input);
    }
  }
  
  // Convertir les listes en ensembles (sets)
  Set<String> firstSet = firstList.toSet();
  Set<String> secondSet = secondList.toSet();
  
  // TODO: Écrivez votre code ci-dessous
  // Utilisez les méthodes union(), intersection() et difference() pour analyser les listes d'invités
  // Calculez tous les invités uniques, les invités présents sur les deux listes, et les invités uniquement sur la première liste
  
  // Afficher les résultats dans le format requis
  print("Event: $eventName");
  print("First invitation list: $firstSet");
  print("Second invitation list: $secondSet");
  // Ajoutez les instructions de sortie restantes ici
}

Toutes les leçons de Logique & Flux