Küme Birleşimi
Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 22 / 65.
İki ayrı Set koleksiyonunuz olduğunda, union() yöntemini kullanarak her ikisindeki tüm benzersiz öğeleri içeren tek bir kümede birleştirebilirsiniz. Bu işlem, orijinal kümelerin herhangi birinde bulunan her öğeyi içeren yeni bir küme oluşturur.
union() methodu yinelenenleri sizin için otomatik olarak işler. Aynı öğe her iki kümede de varsa, ortaya çıkan birleşim kümesinde yalnızca bir kez görünür; böylece kümelerin yalnızca benzersiz değerler içerdiği temel özellik korunur.
Set<String> frontendSkills = {'HTML', 'CSS', 'JavaScript'};
Set<String> backendSkills = {'JavaScript', 'Python', 'SQL'};
Set<String> allSkills = frontendSkills.union(backendSkills);
print(allSkills); // {HTML, CSS, JavaScript, Python, SQL}'JavaScript'in her iki özgün kümede de göründüğüne, ancak birleşim sonucunda yalnızca bir kez yer aldığına dikkat edin. Bu, union() işlevini, beceri kümelerini birleştirmek, kullanıcı izinlerini bir araya getirmek veya birden çok kaynaktan gelen verileri birleştirmek gibi, yinelenenleri önlerken ilgili koleksiyonları birleştirmek için mükemmel hâle getirir.
Her iki kümede de bulunan öğeleri bulmak için intersection() metodunu kullanın. Yalnızca ortak öğeleri içeren yeni bir küme döndürür:
Set<String> sharedSkills = frontendSkills.intersection(backendSkills);
print(sharedSkills); // {JavaScript}Örtüşen öğelerden oluşan bir küme elde ettiğinizde, join() yöntemini kullanarak bunu okunabilir bir dizeye dönüştürebilirsiniz. Bu, List üzerinde olduğu gibi çalışır. Sağladığınız ayırıcıyla tüm öğeleri tek bir dizede birleştirir:
Set<String> overlap = frontendSkills.intersection(backendSkills);
String result = overlap.isEmpty ? 'None' : overlap.join(', ');
print(result); // JavaScriptBirlikte, union(), intersection() ve join(), küme verilerini karşılaştırmak ve görüntülemek için size güçlü araçlar sunar; örneğin takım beceri kümelerini birleştirmek ve hangi becerileri zaten paylaştıklarını belirlemek için.
Görev
KolayFarklı ekip üyelerinin beceri kümelerini birleştirerek kapsamlı bir proje beceri profili oluşturan profesyonel bir ağ sistemini yöneten bir program oluşturun. Programınız şunları yapmalıdır:
- Proje adını temsil eden bir dize girdisini okuyun
- İlk ekip üyesinin becerilerini temsil eden birden fazla dize girdisini okuyun (girdi,
"member1_done"aldığınızda sona erecektir) - İkinci ekip üyesinin becerilerini temsil eden birden fazla dize girdisini okuyun (girdi,
"member2_done"aldığınızda sona erecektir) - Her ekip üyesinin becerilerini depolamak için iki ayrı Set oluşturun
- Her iki beceri kümesini kapsamlı bir proje beceri profilinde birleştirmek için
union()yöntemini kullanın - Beceri birleştirme sonuçlarını aşağıda gösterilen tam biçimde yazdırın
Örneğin, proje adı "Web Development Project", ilk üyenin becerileri "HTML", "CSS", "JavaScript", "React" ve ikinci üyenin becerileri "JavaScript", "Node.js", "MongoDB", "React" ise programınız aşağıdaki çıktıyı vermelidir:
Project: Web Development Project
Team Member 1 skills: {HTML, CSS, JavaScript, React}
Team Member 2 skills: {JavaScript, Node.js, MongoDB, React}
Combined project skills: {HTML, CSS, JavaScript, React, Node.js, MongoDB}
Total unique skills available: 6
Overlapping skills: JavaScript, React
Status: Project skill profile created successfullyProje adı "Mobile App Development", ilk üyenin becerileri "Dart", "Flutter", "Firebase" ve ikinci üyenin becerileri "Swift", "iOS", "Xcode" ise programınız aşağıdaki çıktıyı vermelidir:
Project: Mobile App Development
Team Member 1 skills: {Dart, Flutter, Firebase}
Team Member 2 skills: {Swift, iOS, Xcode}
Combined project skills: {Dart, Flutter, Firebase, Swift, iOS, Xcode}
Total unique skills available: 6
Overlapping skills: None
Status: Project skill profile created successfullyProje adı "Data Science Project", ilk üyenin becerileri "Python", "Pandas", "NumPy", "SQL" ve ikinci üyenin becerileri "Python", "SQL", "Tableau", "Statistics" ise programınız aşağıdaki çıktıyı vermelidir:
Project: Data Science Project
Team Member 1 skills: {Python, Pandas, NumPy, SQL}
Team Member 2 skills: {Python, SQL, Tableau, Statistics}
Combined project skills: {Python, Pandas, NumPy, SQL, Tableau, Statistics}
Total unique skills available: 6
Overlapping skills: Python, SQL
Status: Project skill profile created successfullyProgramınız, iki beceri kümesini birleştirmek için union() yöntemini kullanmalı ve bu yöntemin yinelenenleri otomatik olarak nasıl ele aldığını göstermelidir. Önce ayrı beceri kümelerini, ardından birleştirilmiş sonucu gösterin. Her iki özgün kümede bulunan becerileri bularak ortak becerileri belirleyin. Ortak beceri yoksa ortak beceriler satırında "None" görüntüleyin.
Kendin dene
import 'dart:io';
void main() {
// Proje adını oku
String? projectName = stdin.readLineSync();
// İlk takım üyesinin becerilerini oku
Set<String> member1Skills = <String>{};
String? skill;
while ((skill = stdin.readLineSync()) != "member1_done") {
if (skill != null) {
member1Skills.add(skill);
}
}
// İkinci takım üyesinin becerilerini oku
Set<String> member2Skills = <String>{};
while ((skill = stdin.readLineSync()) != "member2_done") {
if (skill != null) {
member2Skills.add(skill);
}
}
// TODO: Kodunuzu aşağıya yazın
// Her iki beceri kümesini birleştirmek için union() metodunu kullanın
// Find overlapping skills between the two sets
// Calculate total unique skills
// Sonuçları gerekli formatta çıktı verin
print("Project: $projectName");
print("Team Member 1 skills: $member1Skills");
print("Team Member 2 skills: $member2Skills");
// Print combined skills, total count, overlapping skills, and status
}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