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.
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:
- Birinci kullanıcının adını temsil eden bir dize (string) girdisi okuyun
- Birinci kullanıcının bağlantılarını temsil eden birden fazla dize girdisi okuyun (girdi
"user1_done"aldığınızda sona erecektir) - İkinci kullanıcının adını temsil eden bir dize girdisi okuyun
- İkinci kullanıcının bağlantılarını temsil eden birden fazla dize girdisi okuyun (girdi
"user2_done"aldığınızda sona erecektir) - Her kullanıcının bağlantılarını saklamak için iki ayrı Set oluşturun
- Her iki kullanıcı arasındaki ortak bağlantıları bulmak için
intersection()metodunu kullanın - 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 connectionsEğ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 connectionsEğ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 connectionsProgramı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
}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 Listesi