Recapitulação - Lista de Convidados Únicos
Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 25 de 65.
Desafio
FácilCrie um programa que gerencie um sistema de planejamento de eventos analisando listas de convidados de duas fontes de convite diferentes. Seu programa deve:
- Ler uma entrada de string representando o nome do evento
- Ler múltiplas entradas de string representando convidados da primeira lista de convites (a entrada terminará quando você receber
"list1_done") - Ler múltiplas entradas de string representando convidados da segunda lista de convites (a entrada terminará quando você receber
"list2_done") - Converter ambas as listas de convidados em Sets para lidar automaticamente com quaisquer duplicatas dentro de cada lista
- Usar o método
union()para encontrar todos os convidados únicos convidados para o evento - Usar o método
intersection()para encontrar convidados que aparecem em ambas as listas de convites - Usar o método
difference()para encontrar convidados que estão apenas na primeira lista de convites - Imprimir a análise da lista de convidados no formato exato mostrado abaixo
Por exemplo, se o nome do evento for "Birthday Party", a primeira lista contiver "Alice", "Bob", "Charlie", "Diana", e a segunda lista contiver "Bob", "Diana", "Eve", "Frank", seu programa deve exibir:
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 completedSe o nome do evento for "Wedding Reception", a primeira lista contiver "John", "Mary", "Sarah", e a segunda lista contiver "Tom", "Lisa", "Mike", seu programa deve exibir:
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 completedSe o nome do evento for "Company Meeting", a primeira lista contiver "Alex", "Jordan", "Taylor", "Morgan", "Alex", e a segunda lista contiver "Jordan", "Taylor", "Casey", "Jordan", seu programa deve exibir:
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 completedSeu programa deve demonstrar todas as três operações de conjunto: union() para combinar todos os convidados, intersection() para encontrar convidados que aparecem em ambas as listas e difference() para encontrar convidados exclusivos da primeira lista. Converta as listas de entrada em Sets primeiro para lidar com quaisquer duplicatas dentro das listas individuais e, em seguida, execute as operações de conjunto para analisar a distribuição dos convidados.
Experimente você mesmo
import 'dart:io';
void main() {
// Ler o nome do evento
String? eventName = stdin.readLineSync();
// Ler a primeira lista de convidados
List<String> firstList = [];
String? input;
while ((input = stdin.readLineSync()) != "list1_done") {
if (input != null) {
firstList.add(input);
}
}
// Ler a segunda lista de convidados
List<String> secondList = [];
while ((input = stdin.readLineSync()) != "list2_done") {
if (input != null) {
secondList.add(input);
}
}
// Converter listas para conjuntos (sets)
Set<String> firstSet = firstList.toSet();
Set<String> secondSet = secondList.toSet();
// TODO: Escreva seu código abaixo
// Use os métodos union(), intersection() e difference() para analisar as listas de convidados
// Calcule todos os convidados únicos, convidados em ambas as listas e convidados apenas na primeira lista
// Imprimir os resultados no formato exigido
print("Event: $eventName");
print("First invitation list: $firstSet");
print("Second invitation list: $secondSet");
// Adicione as instruções de saída restantes aqui
}Todas as lições de Lógica & Fluxo
1Manipulação Avançada de Listas
Propriedades de Lista: first & lastEstado da Lista: isEmpty & isNotEmptyInvertendo uma ListaAdicionando a uma Lista: insertRemoção em Listas: removeWhereBuscando em uma Lista: indexOfOrdenando uma ListaEmbaralhando uma ListaRecapitulação - Organizador de Listas4Manipulação Avançada de Mapas
Iterando sobre um MapVerificando Chaves e ValoresPropriedades do Map: keys & valuesAdição Condicional: putIfAbsentRemovendo Entradas de um MapMaps AninhadosRecapitulação - Atualização de Inventário2Operações Funcionais em Listas
Transformando com 'map'Filtrando com 'where'Usando '.toList()'Verificando Condições com 'any'Condições com 'every'Encontrando com 'firstWhere'Recapitulação - Filtragem de Dados5Projeto: Cálculo de Carrinho de Compras
Configuração do ProjetoAdicionando Itens ao Carrinho3Conjuntos
O que é um Conjunto?Criando um ConjuntoAdicionando e Removendo de ConjuntosVerificando Elementos em um ConjuntoConvertendo uma Lista para um ConjuntoUnião de ConjuntosInterseção de ConjuntosDiferença de ConjuntosRecapitulação - Lista de Convidados Únicos