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 única