Menu
CoddyTech

Rangkuman: Daftar tamu unik

Termasuk bagian Logika dan Alur dalam perjalanan Dart di Coddy. Pelajaran 25 dari 65.

challenge icon

Tantangan

Mudah

Buat program yang mengelola sistem perencanaan acara dengan menganalisis daftar tamu dari dua sumber undangan yang berbeda. Programmu harus:

  1. Membaca input string yang mewakili nama acara
  2. Membaca beberapa input string yang mewakili tamu dari daftar undangan pertama (input akan berakhir saat kamu menerima "list1_done")
  3. Membaca beberapa input string yang mewakili tamu dari daftar undangan kedua (input akan berakhir saat kamu menerima "list2_done")
  4. Mengonversi kedua daftar tamu menjadi Set agar duplikat dalam setiap daftar ditangani secara otomatis
  5. Menggunakan method union() untuk menemukan semua tamu unik yang diundang ke acara
  6. Menggunakan method intersection() untuk menemukan tamu yang muncul di kedua daftar undangan
  7. Menggunakan method difference() untuk menemukan tamu yang hanya ada di daftar undangan pertama
  8. Mencetak analisis daftar tamu dengan format persis seperti yang ditunjukkan di bawah

Misalnya, jika nama acaranya adalah "Birthday Party", daftar pertama berisi "Alice", "Bob", "Charlie", "Diana", dan daftar kedua berisi "Bob", "Diana", "Eve", "Frank", programmu harus menghasilkan output berikut:

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

Jika nama acaranya adalah "Wedding Reception", daftar pertama berisi "John", "Mary", "Sarah", dan daftar kedua berisi "Tom", "Lisa", "Mike", programmu harus menghasilkan output berikut:

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

Jika nama acaranya adalah "Company Meeting", daftar pertama berisi "Alex", "Jordan", "Taylor", "Morgan", "Alex", dan daftar kedua berisi "Jordan", "Taylor", "Casey", "Jordan", programmu harus menghasilkan output berikut:

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

Programmu harus menunjukkan ketiga operasi set: union() untuk menggabungkan semua tamu, intersection() untuk menemukan tamu yang muncul di kedua daftar, dan difference() untuk menemukan tamu yang hanya ada di daftar pertama. Konversi daftar input menjadi Set terlebih dahulu untuk menangani duplikat dalam setiap daftar, lalu lakukan operasi set untuk menganalisis distribusi tamu.

Coba sendiri

import 'dart:io';

void main() {
  // Baca nama acara
  String? eventName = stdin.readLineSync();
  
  // Baca list undangan pertama
  List<String> firstList = [];
  String? input;
  while ((input = stdin.readLineSync()) != "list1_done") {
    if (input != null) {
      firstList.add(input);
    }
  }
  
  // Baca list undangan kedua
  List<String> secondList = [];
  while ((input = stdin.readLineSync()) != "list2_done") {
    if (input != null) {
      secondList.add(input);
    }
  }
  
  // Ubah list menjadi set
  Set<String> firstSet = firstList.toSet();
  Set<String> secondSet = secondList.toSet();
  
  // TODO: Tulis kodemu di bawah ini
  // Gunakan method union(), intersection(), dan difference() untuk menganalisis list tamu
  // Hitung semua tamu unik, tamu yang ada di kedua list, dan tamu yang hanya ada di list pertama
  
  // Cetak hasilnya dalam format yang diminta
  print("Event: $eventName");
  print("First invitation list: $firstSet");
  print("Second invitation list: $secondSet");
  // Tambahkan pernyataan output lainnya di sini
}

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Dart online