Özet - Benzersiz Davetli Listesi
Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası — ders 25 / 65.
Görev
Kolayİki farklı davet kaynağından gelen konuk listelerini analiz ederek bir etkinlik planlama sistemini yöneten bir program oluşturun. Programınız şunları yapmalıdır:
- Etkinlik adını temsil eden bir dize (string) girdisi okuyun
- Birinci davet listesinden konukları temsil eden birden fazla dize girdisi okuyun (girdi
"list1_done"değerini aldığınızda sona erecektir) - İkinci davet listesinden konukları temsil eden birden fazla dize girdisi okuyun (girdi
"list2_done"değerini aldığınızda sona erecektir) - Her liste içindeki kopyaları otomatik olarak işlemek için her iki konuk listesini Set'e (Küme) dönüştürün
- Etkinliğe davet edilen tüm benzersiz konukları bulmak için
union()metodunu kullanın - Her iki davet listesinde de bulunan konukları bulmak için
intersection()metodunu kullanın - Yalnızca birinci davet listesinde bulunan konukları bulmak için
difference()metodunu kullanın - Konuk listesi analizini aşağıda gösterilen tam formatta yazdırın
Örneğin, etkinlik adı "Birthday Party" ise, birinci liste "Alice", "Bob", "Charlie", "Diana" içeriyorsa ve ikinci liste "Bob", "Diana", "Eve", "Frank" içeriyorsa, programınızın çıktısı şöyle olmalıdır:
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 completedEğer etkinlik adı "Wedding Reception" ise, birinci liste "John", "Mary", "Sarah" içeriyorsa ve ikinci liste "Tom", "Lisa", "Mike" içeriyorsa, programınızın çıktısı şöyle olmalıdır:
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 completedEğer etkinlik adı "Company Meeting" ise, birinci liste "Alex", "Jordan", "Taylor", "Morgan", "Alex" içeriyorsa ve ikinci liste "Jordan", "Taylor", "Casey", "Jordan" içeriyorsa, programınızın çıktısı şöyle olmalıdır:
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 completedProgramınız her üç küme işlemini de göstermelidir: tüm konukları birleştirmek için union(), her iki listede de görünen konukları bulmak için intersection() ve yalnızca birinci listeye özel konukları bulmak için difference(). Bireysel listelerdeki kopyaları işlemek için önce girdi listelerini Set'lere dönüştürün, ardından konuk dağılımını analiz etmek için küme işlemlerini gerçekleştirin.
Kendin dene
import 'dart:io';
void main() {
// Etkinlik adını oku
String? eventName = stdin.readLineSync();
// İlk davetli listesini oku
List<String> firstList = [];
String? input;
while ((input = stdin.readLineSync()) != "list1_done") {
if (input != null) {
firstList.add(input);
}
}
// İkinci davetli listesini oku
List<String> secondList = [];
while ((input = stdin.readLineSync()) != "list2_done") {
if (input != null) {
secondList.add(input);
}
}
// Listeleri kümelere (set) dönüştür
Set<String> firstSet = firstList.toSet();
Set<String> secondSet = secondList.toSet();
// TODO: Kodunuzu aşağıya yazın
// Davetli listelerini analiz etmek için union(), intersection() ve difference() metotlarını kullanın
// Tüm benzersiz davetlileri, her iki listedeki davetlileri ve sadece ilk listedeki davetlileri hesaplayın
// Sonuçları istenen formatta yazdırın
print("Event: $eventName");
print("First invitation list: $firstSet");
print("Second invitation list: $secondSet");
// Kalan çıktı ifadelerini buraya ekleyin
}Mantık & Akış bölümündeki tüm dersler
1İleri Düzey Liste İşlemleri
Liste Özellikleri: first & lastListe Durumu: isEmpty & isNotEmptyBir Listeyi Tersine ÇevirmeListeye Ekleme: insertListeden Silme: removeWhereListede Bulma: indexOfBir Listeyi SıralamaBir Listeyi KarıştırmaÖzet - Liste Düzenleyici4İleri Seviye Map İşlemleri
Map Üzerinde GezinmeAnahtar ve Değer KontrolüMap Özellikleri: keys & valuesKoşullu Ekleme: putIfAbsentMap'ten Öge Kaldırmaİç İçe Map'lerÖzet - Envanter Güncelleme7İleri Seviye Fonksiyonlar
Anonim FonksiyonlarFonksiyonları Argüman Olarak AktarmaClosure'ları AnlamakÖzyinelemeye GirişÖzyinelemeli Fonksiyon: Geri SayımÖzyinelemeli Fonksiyon: FaktöriyelÖzet - Liste İşleyici10Son Meydan Okumalar
Meydan Okuma: Not SıralayıcıMeydan Okuma: Sesli Harf SayacıMeydan Okuma: FizzBuzz2Fonksiyonel Liste İşlemleri
'map' ile Dönüştürme'where' ile Filtreleme'.toList()' Kullanımı'any' ile Koşul Kontrolü'every' ile Koşullar'firstWhere' ile BulmaÖzet - Veri Filtreleme5Proje: Alışveriş Sepeti Hesaplayıcı
Proje KurulumuSepete Ürün Ekleme3Kümeler
Küme Nedir?Küme OluşturmaKümelere Eleman Ekleme ve ÇıkarmaKüme İçinde Eleman KontrolüListeyi Kümeye DönüştürmeKüme BirleşimiKüme KesişimiKüme FarkıÖzet - Benzersiz Davetli Listesi