Menu
Coddy logo textTech

Küme Kesişimi

Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası — ders 23 / 65.

İki Set koleksiyonunun her ikisinde de bulunan öğeleri bulmanız gerektiğinde, intersection() yöntemi mükemmel çözümü sunar. Bu işlem, iki küme arasındaki ortak öğeleri belirleyerek, yalnızca her iki orijinal koleksiyonda da görünen öğeleri içeren yeni bir küme oluşturur.

intersection() yöntemi, iki kümenin öğelerini karşılaştırarak ve yalnızca paylaşılan değerleri içeren yeni bir küme döndürerek çalışır. Diğer küme işlemleri gibi, benzersizliği otomatik olarak yönetir, bu nedenle her ortak öğe sonuçta yalnızca bir kez görünür.

Set<String> aliceFriends = {'Bob', 'Charlie', 'Diana', 'Eve'};
Set<String> bobFriends = {'Alice', 'Charlie', 'Frank', 'Diana'};

Set<String> mutualFriends = aliceFriends.intersection(bobFriends);
print(mutualFriends);  // {Charlie, Diana}

Bu işlem, kullanıcılar arasındaki ortak ilgi alanları, ekiplerdeki paylaşılan beceriler veya filtreleme işlemlerindeki eşleşen kriterler gibi verilerdeki çakışmaları bulmak için özellikle yararlıdır. Kesişim, iki koleksiyonun ortak noktalarını belirlemenize yardımcı olarak karşılaştırma ve analiz görevleri için onu değerli kılar.

challenge icon

Görev

Kolay

İki kullanıcı arasındaki ortak bağlantıları bularak bir sosyal medya platformunu yöneten bir program oluşturun. Programınız şunları yapmalıdır:

  1. Birinci kullanıcının adını temsil eden bir dize (string) girdisi okuyun
  2. Birinci kullanıcının bağlantılarını temsil eden birden fazla dize girdisi okuyun (girdi "user1_done" aldığınızda sona erecektir)
  3. İkinci kullanıcının adını temsil eden bir dize girdisi okuyun
  4. İkinci kullanıcının bağlantılarını temsil eden birden fazla dize girdisi okuyun (girdi "user2_done" aldığınızda sona erecektir)
  5. Her kullanıcının bağlantılarını saklamak için iki ayrı Set oluşturun
  6. Her iki kullanıcı arasındaki ortak bağlantıları bulmak için intersection() metodunu kullanın
  7. Bağlantı analizi sonuçlarını tam olarak aşağıda gösterilen formatta yazdırın

Örneğin, ilk kullanıcı "Alice" ve bağlantıları "Bob", "Charlie", "Diana", "Eve" ise ve ikinci kullanıcı "Bob" ve bağlantıları "Alice", "Charlie", "Frank", "Diana" ise programınız şu çıktıyı vermelidir:

User Analysis: Finding mutual connections
Alice's connections: {Bob, Charlie, Diana, Eve}
Bob's connections: {Alice, Charlie, Frank, Diana}
Mutual connections: {Charlie, Diana}
Total mutual connections: 2
Connection strength: Strong (2+ mutual connections)
Status: Users have mutual connections

Eğer ilk kullanıcı "Sarah" ve bağlantıları "John", "Mike", "Lisa" ise ve ikinci kullanıcı "Tom" ve bağlantıları "Emma", "David", "Kate" ise programınız şu çıktıyı vermelidir:

User Analysis: Finding mutual connections
Sarah's connections: {John, Mike, Lisa}
Tom's connections: {Emma, David, Kate}
Mutual connections: {}
Total mutual connections: 0
Connection strength: None (no mutual connections)
Status: Users have no mutual connections

Eğer ilk kullanıcı "Emma" ve bağlantıları "Alex", "Jordan", "Taylor", "Morgan" ise ve ikinci kullanıcı "Jordan" ve bağlantıları "Emma", "Taylor", "Casey" ise programınız şu çıktıyı vermelidir:

User Analysis: Finding mutual connections
Emma's connections: {Alex, Jordan, Taylor, Morgan}
Jordan's connections: {Emma, Taylor, Casey}
Mutual connections: {Taylor}
Total mutual connections: 1
Connection strength: Weak (1 mutual connection)
Status: Users have mutual connections

Programınız, iki kullanıcı Seti arasındaki ortak bağlantıları bulmak için intersection() metodunu kullanmalıdır. Ortak bağlantı sayısına göre bağlantı gücünü belirleyin: 0 ortak bağlantı için "None", tam olarak 1 ortak bağlantı için "Weak" ve 2 veya daha fazla ortak bağlantı için "Strong". Ortak bağlantı varsa durum olarak "Users have mutual connections" gösterin, aksi takdirde "Users have no mutual connections" gösterin.

Kopya kağıdı

intersection() yöntemi, iki küme arasındaki ortak öğeleri bularak yalnızca paylaşılan değerleri içeren yeni bir küme döndürür:

Set<String> aliceFriends = {'Bob', 'Charlie', 'Diana', 'Eve'};
Set<String> bobFriends = {'Alice', 'Charlie', 'Frank', 'Diana'};

Set<String> mutualFriends = aliceFriends.intersection(bobFriends);
print(mutualFriends);  // {Charlie, Diana}

Bu işlem benzersizliği otomatik olarak yönetir ve ortak ilgi alanları, paylaşılan beceriler veya filtreleme işlemlerindeki eşleşme kriterleri gibi verilerdeki örtüşmeleri bulmak için kullanışlıdır.

Kendin dene

import 'dart:io';

void main() {
  // İlk kullanıcının adını oku
  String? user1Name = stdin.readLineSync();
  
  // "user1_done" gelene kadar ilk kullanıcının bağlantılarını oku
  Set<String> user1Connections = <String>{};
  String? connection;
  while ((connection = stdin.readLineSync()) != "user1_done") {
    if (connection != null) {
      user1Connections.add(connection);
    }
  }
  
  // İkinci kullanıcının adını oku
  String? user2Name = stdin.readLineSync();
  
  // "user2_done" gelene kadar ikinci kullanıcının bağlantılarını oku
  Set<String> user2Connections = <String>{};
  while ((connection = stdin.readLineSync()) != "user2_done") {
    if (connection != null) {
      user2Connections.add(connection);
    }
  }
  
  // TODO: Kodunuzu aşağıya yazın
  // intersection() metodunu kullanarak ortak bağlantıları bulun
  // Ortak bağlantı sayısına göre bağlantı gücünü belirleyin
  // Gerekli çıktı formatını oluşturun
  
  // Analiz sonuçlarını yazdır
  print("User Analysis: Finding mutual connections");
  // Çıktı ifadelerinizi buraya ekleyin
}
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