Menu
CoddyTech

Irisan set

Termasuk bagian Logika dan Alur dalam perjalanan Dart di Coddy. Pelajaran 23 dari 65.

Saat kamu perlu menemukan elemen yang ada di kedua koleksi Set, method intersection() memberikan solusi yang tepat. Operasi ini mengidentifikasi elemen yang sama di antara dua set, lalu membuat set baru yang hanya berisi item yang muncul di kedua koleksi aslinya.

method intersection() bekerja dengan membandingkan elemen dari dua set dan mengembalikan set baru yang hanya berisi nilai yang sama. Seperti operasi set lainnya, method ini otomatis menangani keunikan, sehingga setiap elemen yang sama hanya muncul satu kali dalam hasilnya.

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

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

Operasi ini sangat berguna untuk menemukan irisan data, seperti minat yang sama di antara pengguna, keterampilan yang dimiliki bersama dalam tim, atau kriteria yang cocok dalam operasi penyaringan. Irisan membantu kamu mengidentifikasi kesamaan antara dua koleksi, sehingga berguna untuk tugas perbandingan dan analisis.

challenge icon

Tantangan

Mudah

Buat program yang mengelola platform media sosial dengan mencari koneksi bersama antara dua pengguna. Programmu harus:

  1. Membaca input string yang mewakili nama pengguna pertama
  2. Membaca beberapa input string yang mewakili koneksi pengguna pertama (input akan berakhir saat kamu menerima "user1_done")
  3. Membaca input string yang mewakili nama pengguna kedua
  4. Membaca beberapa input string yang mewakili koneksi pengguna kedua (input akan berakhir saat kamu menerima "user2_done")
  5. Membuat dua set terpisah untuk menyimpan koneksi setiap pengguna
  6. Menggunakan method intersection() untuk mencari koneksi bersama antara kedua pengguna
  7. Mencetak hasil analisis koneksi dalam format persis seperti yang ditunjukkan di bawah

Misalnya, jika pengguna pertama adalah "Alice" dengan koneksi "Bob", "Charlie", "Diana", "Eve", dan pengguna kedua adalah "Bob" dengan koneksi "Alice", "Charlie", "Frank", "Diana", programmu harus menghasilkan:

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

Jika pengguna pertama adalah "Sarah" dengan koneksi "John", "Mike", "Lisa", dan pengguna kedua adalah "Tom" dengan koneksi "Emma", "David", "Kate", programmu harus menghasilkan:

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

Jika pengguna pertama adalah "Emma" dengan koneksi "Alex", "Jordan", "Taylor", "Morgan", dan pengguna kedua adalah "Jordan" dengan koneksi "Emma", "Taylor", "Casey", programmu harus menghasilkan:

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

Programmu harus menggunakan method intersection() untuk mencari koneksi bersama antara kedua set pengguna. Tentukan kekuatan koneksi berdasarkan jumlah koneksi bersama: "None" untuk 0 koneksi bersama, "Weak" untuk tepat 1 koneksi bersama, dan "Strong" untuk 2 koneksi bersama atau lebih. Jika ada koneksi bersama, tampilkan "Users have mutual connections" sebagai status, jika tidak, tampilkan "Users have no mutual connections".

Coba sendiri

import 'dart:io';

void main() {
  // Baca nama pengguna pertama
  String? user1Name = stdin.readLineSync();
  
  // Baca 's connections pengguna pertama hingga "user1_done"
  Set<String> user1Connections = <String>{};
  String? connection;
  while ((connection = stdin.readLineSync()) != "user1_done") {
    if (connection != null) {
      user1Connections.add(connection);
    }
  }
  
  // Baca nama pengguna kedua
  String? user2Name = stdin.readLineSync();
  
  // Baca 's connections pengguna kedua hingga "user2_done"
  Set<String> user2Connections = <String>{};
  while ((connection = stdin.readLineSync()) != "user2_done") {
    if (connection != null) {
      user2Connections.add(connection);
    }
  }
  
  // TODO: Tulis kodemu di bawah ini
  // Temukan koneksi bersama menggunakan method intersection()
  // Tentukan kekuatan koneksi berdasarkan jumlah koneksi bersama
  // Buat format output yang diperlukan
  
  // Cetak hasil analisis
  print("User Analysis: Finding mutual connections");
  // Tambahkan pernyataan output-mu di sini
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Dart online