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.
Desafío
FácilCrea 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:
- Leer una entrada de cadena que represente el nombre del evento
- 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") - 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") - Convertir ambas listas de invitados a Sets para manejar automáticamente cualquier duplicado dentro de cada lista
- Usar el método
union()para encontrar todos los invitados únicos invitados al evento - Usar el método
intersection()para encontrar invitados que aparecen en ambas listas de invitación - Usar el método
difference()para encontrar invitados que solo están en la primera lista de invitación - 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 completedSi 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 completedSi 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 completedTu 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
1Manipulación avanzada de listas
Propiedades de listas: first y lastEstado de la lista: isEmpty y isNotEmptyInvertir una listaAñadir a una lista: insertEliminación en listas: removeWhereBúsqueda en una lista: indexOfOrdenar una listaMezclar una listaResumen - Organizador de listas4Manipulación avanzada de mapas
Iterar sobre un mapaComprobación de claves y valoresPropiedades del mapa: keys y valuesAdición condicional: putIfAbsentEliminar entradas de un mapaMapas anidadosResumen - Actualización de inventario2Operaciones funcionales con listas
Transformar con 'map'Filtrar con 'where'Uso de '.toList()'Comprobar condiciones con 'any'Condiciones con 'every'Búsqueda con 'firstWhere'Resumen - Filtrado de datos5Proyecto: Calculadora de carrito de compras
Configuración del proyectoAgregar artículos al carrito3Conjuntos
¿Qué es un Conjunto?Crear un ConjuntoAñadir y eliminar elementos de un ConjuntoComprobar elementos en un ConjuntoConvertir una lista en un ConjuntoUnión de ConjuntosIntersección de ConjuntosDiferencia de ConjuntosResumen - Lista de invitados únicaPractica por tu cuenta: Compilador de Dart online