Menu
Coddy logo textTech

Recapitulação - Lista de Convidados Únicos

Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 25 de 65.

challenge icon

Desafio

Fácil

Crie um programa que gerencie um sistema de planejamento de eventos analisando listas de convidados de duas fontes de convite diferentes. Seu programa deve:

  1. Ler uma entrada de string representando o nome do evento
  2. Ler múltiplas entradas de string representando convidados da primeira lista de convites (a entrada terminará quando você receber "list1_done")
  3. Ler múltiplas entradas de string representando convidados da segunda lista de convites (a entrada terminará quando você receber "list2_done")
  4. Converter ambas as listas de convidados em Sets para lidar automaticamente com quaisquer duplicatas dentro de cada lista
  5. Usar o método union() para encontrar todos os convidados únicos convidados para o evento
  6. Usar o método intersection() para encontrar convidados que aparecem em ambas as listas de convites
  7. Usar o método difference() para encontrar convidados que estão apenas na primeira lista de convites
  8. 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 completed

Se 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 completed

Se 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 completed

Seu 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