Menu
Coddy logo textTech

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 koleksiyonuna sahip olduğunuzda, union() yöntemini kullanarak bunları her ikisinden de tüm benzersiz öğeleri içeren tek bir kümede birleştirebilirsiniz. Bu işlem, orijinal kümelerin herhangi birinde görünen her öğeyi içeren yeni bir küme oluşturur.

union() metodu, kopyaları sizin yerinize otomatik olarak işler. Aynı öğe her iki kümede de mevcutsa, sonuçtaki birleşim kümesinde yalnızca bir kez görünür ve kümelerin yalnızca benzersiz değerler içerdiği temel özelliğini korur.

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 orijinal kümede de göründüğüne, ancak birleşim sonucunda yalnızca bir kez yer aldığına dikkat edin. Bu, union() fonksiyonunu; beceri setlerini birleştirmek, kullanıcı izinlerini bir araya getirmek veya birden fazla kaynaktan gelen verileri konsolide etmek gibi, yinelenen veri olmamasını sağlayarak ilişkili koleksiyonları birleştirmek için mükemmel kılar.

Her iki kümede de bulunan öğeleri bulmak için intersection() metodunu kullanın. Yalnızca paylaşılan öğeleri içeren yeni bir küme döndürür:

Set<String> sharedSkills = frontendSkills.intersection(backendSkills);
print(sharedSkills);  // {JavaScript}

Birbiriyle örtüşen öğelerden oluşan bir kümeniz olduğunda, join() yöntemini kullanarak bunu okunabilir bir dizeye dönüştürebilirsiniz. Bu, bir List üzerinde olduğu gibi çalışır — tüm öğeleri sağladığınız bir ayırıcı ile tek bir dize halinde birleştirir:

Set<String> overlap = frontendSkills.intersection(backendSkills);
String result = overlap.isEmpty ? 'None' : overlap.join(', ');
print(result);  // JavaScript

Birlikte, 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 setlerini birleştirmek ve halihazırda hangi becerileri paylaştıklarını belirlemek gibi.

challenge icon

Görev

Kolay

Farklı ekip üyelerinin beceri setlerini birleştirerek kapsamlı bir proje beceri profili oluşturan ve profesyonel bir ağ sistemini yöneten bir program oluşturun. Programınız şunları yapmalıdır:

  1. Proje adını temsil eden bir dize (string) girdisi okuyun
  2. Birinci ekip üyesinin becerilerini temsil eden birden fazla dize girdisi okuyun (girdi "member1_done" ifadesini aldığınızda sona erecektir)
  3. İkinci ekip üyesinin becerilerini temsil eden birden fazla dize girdisi okuyun (girdi "member2_done" ifadesini aldığınızda sona erecektir)
  4. Her ekip üyesinin becerilerini saklamak için iki ayrı Set oluşturun
  5. Her iki beceri setini kapsamlı bir proje beceri profilinde birleştirmek için union() metodunu kullanın
  6. Beceri birleştirme sonuçlarını aşağıda gösterilen tam formatta yazdırın

Örneğin, proje adı "Web Development Project" ise, birinci üyenin becerileri "HTML", "CSS", "JavaScript", "React" ve ikinci üyenin becerileri "JavaScript", "Node.js", "MongoDB", "React" ise, programınız şu çı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 successfully

Eğer proje adı "Mobile App Development" ise, birinci üyenin becerileri "Dart", "Flutter", "Firebase" ve ikinci üyenin becerileri "Swift", "iOS", "Xcode" ise, programınız şu çı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 successfully

Eğer proje adı "Data Science Project" ise, birinci üyenin becerileri "Python", "Pandas", "NumPy", "SQL" ve ikinci üyenin becerileri "Python", "SQL", "Tableau", "Statistics" ise, programınız şu çı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 successfully

Programınız, iki beceri setini birleştirmek için union() metodunu kullanmalı ve bunun kopyaları nasıl otomatik olarak yönettiğini göstermelidir. Önce bireysel beceri setlerini, ardından birleştirilmiş sonucu gösterin. Her iki orijinal sette de bulunan becerileri bularak çakışan becerileri tanımlayın. Çakışan beceri yoksa, çakışan beceriler satırı için "None" görüntüleyin.

Kendin dene

import 'dart:io';

void main() {
  // Proje adını oku
  String? projectName = stdin.readLineSync();
  
  // Birinci ekip üyesinin yeteneklerini oku
  Set<String> member1Skills = <String>{};
  String? skill;
  while ((skill = stdin.readLineSync()) != "member1_done") {
    if (skill != null) {
      member1Skills.add(skill);
    }
  }
  
  // İkinci ekip üyesinin yeteneklerini 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 yetenek kümesini birleştirmek için union() metodunu kullanın
  // İki küme arasındaki örtüşen yetenekleri bulun
  // Toplam benzersiz yetenek sayısını hesaplayın
  
  // Sonuçları istenen formatta yazdırın
  print("Project: $projectName");
  print("Team Member 1 skills: $member1Skills");
  print("Team Member 2 skills: $member2Skills");
  // Birleştirilmiş yetenekleri, toplam sayıyı, örtüşen yetenekleri ve durumu yazdırın
}
quiz iconKendini test et

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