Rangkuman: Daftar tamu unik
Termasuk bagian Logika dan Alur dalam perjalanan Dart di Coddy. Pelajaran 25 dari 65.
Tantangan
MudahBuat program yang mengelola sistem perencanaan acara dengan menganalisis daftar tamu dari dua sumber undangan yang berbeda. Programmu harus:
- Membaca input string yang mewakili nama acara
- Membaca beberapa input string yang mewakili tamu dari daftar undangan pertama (input akan berakhir saat kamu menerima
"list1_done") - Membaca beberapa input string yang mewakili tamu dari daftar undangan kedua (input akan berakhir saat kamu menerima
"list2_done") - Mengonversi kedua daftar tamu menjadi Set agar duplikat dalam setiap daftar ditangani secara otomatis
- Menggunakan method
union()untuk menemukan semua tamu unik yang diundang ke acara - Menggunakan method
intersection()untuk menemukan tamu yang muncul di kedua daftar undangan - Menggunakan method
difference()untuk menemukan tamu yang hanya ada di daftar undangan pertama - 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 completedJika 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 completedJika 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 completedProgrammu 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
1Manipulasi list Tingkat Lanjut
Properti list: first dan lastStatus list: isEmpty dan isNotEmpMembalikkan listMenambahkan ke list: insertMenghapus dari list: removeWhereMencari dalam list: indexOfMengurutkan listMengacak listRekap: Pengatur list4Manipulasi Map Lanjutan
Melakukan perulangan pada MapMemeriksa kunci dan nilaiProperti Map: kunci dan nilaiPenambahan Bersyarat: putIfAbsentMenghapus Entri dari MapMap BersarangRingkasan: Pembaruan Inventaris2Operasi Fungsional pada list
Mengubah dengan 'map'Menyaring dengan 'where'Menggunakan '.toList()'Memeriksa Kondisi dengan 'any'Kondisi dengan 'every'Menemukan dengan 'firstWhere'Ulasan: Penyaringan Data5Proyek: Perhitungan Keranjang Belanja
Menyiapkan ProyekMenambahkan Barang ke Keranjang3set
Apa itu set?Membuat setMenambahkan dan menghapus elemen dari setMemeriksa elemen dalam setMengubah list menjadi setGabungan setIrisan setSelisih setRangkuman: Daftar tamu unikLatihan sendiri: Compiler Dart online