Menu
Coddy logo textTech

Resumen - Lista de invitados única

Parte de la sección Lógica y Flujo del Journey de Dart de Coddy — lección 25 de 65.

challenge icon

Desafío

Fácil

Crea un programa que gestione un sistema de planificación de eventos analizando las listas de invitados de dos fuentes de invitación diferentes. Tu programa debe:

  1. Leer una entrada de cadena que represente el nombre del evento
  2. Leer múltiples entradas de cadena que representen a los invitados de la primera lista de invitación (la entrada terminará cuando recibas "list1_done")
  3. Leer múltiples entradas de cadena que representen a los invitados de la segunda lista de invitación (la entrada terminará cuando recibas "list2_done")
  4. Convertir ambas listas de invitados a Sets para manejar automáticamente cualquier duplicado dentro de cada lista
  5. Usar el método union() para encontrar todos los invitados únicos invitados al evento
  6. Usar el método intersection() para encontrar invitados que aparecen en ambas listas de invitación
  7. Usar el método difference() para encontrar invitados que solo están en la primera lista de invitación
  8. Imprimir el análisis de la lista de invitados en el formato exacto que se muestra a continuación

Por ejemplo, si el nombre del evento es "Birthday Party", la primera lista contiene "Alice", "Bob", "Charlie", "Diana", y la segunda lista contiene "Bob", "Diana", "Eve", "Frank", tu programa debería mostrar:

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 el nombre del evento es "Wedding Reception", la primera lista contiene "John", "Mary", "Sarah", y la segunda lista contiene "Tom", "Lisa", "Mike", tu programa debería mostrar:

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 el nombre del evento es "Company Meeting", la primera lista contiene "Alex", "Jordan", "Taylor", "Morgan", "Alex", y la segunda lista contiene "Jordan", "Taylor", "Casey", "Jordan", tu programa debería mostrar:

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

Tu programa debe demostrar las tres operaciones de conjuntos: union() para combinar a todos los invitados, intersection() para encontrar invitados que aparecen en ambas listas, y difference() para encontrar invitados exclusivos de la primera lista. Convierte primero las listas de entrada a Sets para manejar cualquier duplicado dentro de las listas individuales, luego realiza las operaciones de conjuntos para analizar la distribución de los invitados.

Pruébalo tú mismo

import 'dart:io';

void main() {
  // Leer el nombre del evento
  String? eventName = stdin.readLineSync();
  
  // Leer la primera lista de invitados
  List<String> firstList = [];
  String? input;
  while ((input = stdin.readLineSync()) != "list1_done") {
    if (input != null) {
      firstList.add(input);
    }
  }
  
  // Leer la segunda lista de invitados
  List<String> secondList = [];
  while ((input = stdin.readLineSync()) != "list2_done") {
    if (input != null) {
      secondList.add(input);
    }
  }
  
  // Convertir listas a conjuntos (sets)
  Set<String> firstSet = firstList.toSet();
  Set<String> secondSet = secondList.toSet();
  
  // TODO: Escribe tu código a continuación
  // Usa los métodos union(), intersection() y difference() para analizar las listas de invitados
  // Calcula todos los invitados únicos, los invitados en ambas listas y los invitados solo en la primera lista
  
  // Imprimir los resultados en el formato requerido
  print("Event: $eventName");
  print("First invitation list: $firstSet");
  print("Second invitation list: $secondSet");
  // Agrega las declaraciones de salida restantes aquí
}

Todas las lecciones de Lógica y Flujo