Küme Farkı
Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 24 / 65.
Bazen bir Set içinde bulunan ancak diğerinde bulunmayan öğeleri bulmanız gerekir. difference() yöntemi, yalnızca ilk kümede bulunan ancak ikinci kümede bulunmayan öğeleri içeren yeni bir küme oluşturarak bunu çözer.
Bunu kümeler için çıkarma işlemi gibi düşünün - ikinci kümenin tüm elemanlarını birinci kümeden çıkarıyorsunuz. difference() metodu, her iki orijinal kümeyi de değiştirmeden bırakarak, kalan elemanlarla yeni bir küme döndürür.
Set<String> todaysTasks = {'email', 'meeting', 'report', 'calls'};
Set<String> completedTasks = {'email', 'calls'};
Set<String> remainingTasks = todaysTasks.difference(completedTasks);
print(remainingTasks); // {meeting, report}Bu işlem, neyin eksik olduğunu, yapılacak nelerin kaldığını veya bir koleksiyonda diğerine kıyasla neyin benzersiz olduğunu bulmak için özellikle kullanışlıdır. Ortak noktaları bulan kesişimin aksine fark, bir kümeyi diğerinden farklı kılan şeyleri öne çıkarır.
Görev
KolayHenüz tamamlanmamış, planlanmış görevleri belirleyerek bir proje yönetim sistemini yöneten bir program oluşturun. Programınız şunları yapmalıdır:
- Proje adını temsil eden bir dize girdisi okuyun
- Planlanmış görevleri temsil eden birden fazla dize girdisi okuyun (girdi,
"planned_done"alındığında sona erecektir) - Tamamlanmış görevleri temsil eden birden fazla dize girdisi okuyun (girdi,
"completed_done"alındığında sona erecektir) - Planlanmış görevleri ve tamamlanmış görevleri depolamak için iki ayrı Set oluşturun
- Henüz tamamlanmamış planlanmış görevleri bulmak için
difference()yöntemini kullanın - Proje durumu analizini aşağıda gösterilen tam biçimde yazdırın
Örneğin, proje adı "Website Launch", planlanmış görevler "Design mockups", "Write content", "Setup database", "Test functionality", "Deploy site" ve tamamlanmış görevler "Design mockups", "Setup database" ise programınız şunu üretmelidir:
Project: Website Launch
Planned tasks: {Design mockups, Write content, Setup database, Test functionality, Deploy site}
Completed tasks: {Design mockups, Setup database}
Remaining tasks: {Write content, Test functionality, Deploy site}
Tasks completed: 2
Tasks remaining: 3
Progress: 40.0% complete
Status: Project in progress - 3 task(s) remainingProje adı "Mobile App Development", planlanmış görevler "Create wireframes", "Develop UI", "Implement features" ve tamamlanmış görevler "Create wireframes", "Develop UI", "Implement features" ise programınız şunu üretmelidir:
Project: Mobile App Development
Planned tasks: {Create wireframes, Develop UI, Implement features}
Completed tasks: {Create wireframes, Develop UI, Implement features}
Remaining tasks: {}
Tasks completed: 3
Tasks remaining: 0
Progress: 100.0% complete
Status: Project completed successfullyProje adı "Marketing Campaign", planlanmış görevler "Research target audience", "Create content", "Design graphics", "Launch campaign", "Analyze results" ve tamamlanmış görevler "Research target audience" ise programınız şunu üretmelidir:
Project: Marketing Campaign
Planned tasks: {Research target audience, Create content, Design graphics, Launch campaign, Analyze results}
Completed tasks: {Research target audience}
Remaining tasks: {Create content, Design graphics, Launch campaign, Analyze results}
Tasks completed: 1
Tasks remaining: 4
Progress: 20.0% complete
Status: Project in progress - 4 task(s) remainingProgramınız, planlanmış görevler Set'inde bulunan ancak tamamlanmış görevler Set'inde bulunmayan görevleri bulmak için difference() yöntemini kullanmalıdır. Tamamlanmış görevleri toplam planlanmış görev sayısına bölüp 100 ile çarparak ve sonucu 1 ondalık basamağa yuvarlayarak ilerleme yüzdesini hesaplayın. Tüm görevler tamamlandıysa durum olarak "Proje başarıyla tamamlandı" ifadesini gösterin; aksi takdirde X'in kalan görev sayısı olduğu "Proje devam ediyor - X görev kaldı" ifadesini gösterin.
Kendin dene
import 'dart:io';
void main() {
// Proje adını oku
String? projectName = stdin.readLineSync();
// "planned_done" gelene kadar planlanan görevleri oku
Set<String> plannedTasks = <String>{};
String? task;
while ((task = stdin.readLineSync()) != "planned_done") {
if (task != null) {
plannedTasks.add(task);
}
}
// "completed_done" gelene kadar tamamlanan görevleri oku
Set<String> completedTasks = <String>{};
while ((task = stdin.readLineSync()) != "completed_done") {
if (task != null) {
completedTasks.add(task);
}
}
// TODO: Kodunuzu aşağıya yazın
// Kalan görevleri bulmak için difference() metodunu kullanın
// İlerleme yüzdesini hesaplayın
// Proje durumunu belirleyin
// Sonuçları yazdır
print("Project: $projectName");
print("Planned tasks: $plannedTasks");
print("Completed tasks: $completedTasks");
// Kalan çıktı ifadelerini buraya ekleyin
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
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 ListesiKendi başına pratik yap: Online Dart derleyicisi