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.
Tantangan
MudahBuat program yang mengelola platform media sosial dengan mencari koneksi bersama antara dua pengguna. Programmu harus:
- Membaca input string yang mewakili nama pengguna pertama
- Membaca beberapa input string yang mewakili koneksi pengguna pertama (input akan berakhir saat kamu menerima
"user1_done") - Membaca input string yang mewakili nama pengguna kedua
- Membaca beberapa input string yang mewakili koneksi pengguna kedua (input akan berakhir saat kamu menerima
"user2_done") - Membuat dua set terpisah untuk menyimpan koneksi setiap pengguna
- Menggunakan method
intersection()untuk mencari koneksi bersama antara kedua pengguna - 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 connectionsJika 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 connectionsJika 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 connectionsProgrammu 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
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Manipulasi list Tingkat Lanjut
Properti list: first dan lastStatus list: isEmpty dan isNotEmpMembalikkan listMenambahkan ke list: insertMenghapus dari list: removeWhereMencari dalam list: indexOfMengurutkan listMengacak listRekap: Pengatur list4Manipulasi Map Lanjutan
Melakukan perulangan pada MapMemeriksa kunci dan nilaiProperti Map: kunci dan nilaiPenambahan Bersyarat: putIfAbsentMenghapus Entri dari MapMap BersarangRingkasan: Pembaruan Inventaris2Operasi Fungsional pada list
Mengubah dengan 'map'Menyaring dengan 'where'Menggunakan '.toList()'Memeriksa Kondisi dengan 'any'Kondisi dengan 'every'Menemukan dengan 'firstWhere'Ulasan: Penyaringan Data5Proyek: Perhitungan Keranjang Belanja
Menyiapkan ProyekMenambahkan Barang ke Keranjang3set
Apa itu set?Membuat setMenambahkan dan menghapus elemen dari setMemeriksa elemen dalam setMengubah list menjadi setGabungan setIrisan setSelisih setRangkuman: Daftar tamu unikLatihan sendiri: Compiler Dart online