Himpunan Bagian dan Himpunan Superset
Termasuk bagian Logika dan Alur dalam perjalanan Swift di Coddy. Pelajaran 21 dari 56.
Selain menggabungkan set, kamu juga bisa membandingkannya.
isSubset(of:) menjawab pertanyaan "apakah setiap elemen milikku juga ada di set lainnya?"
let small: Set = [1, 2]
let big: Set = [1, 2, 3, 4]
small.isSubset(of: big) // true
big.isSubset(of: small) // falseisSuperset(of:) adalah kebalikannya, "apakah aku memuat setiap elemen dari set lainnya?":
big.isSuperset(of: small) // trueisDisjoint(with:) mengembalikan true saat kedua set sama sekali tidak memiliki elemen yang sama:
let evens: Set = [2, 4, 6]
let odds: Set = [1, 3, 5]
evens.isDisjoint(with: odds) // trueKetiga predikat ini adalah cara paling rapi untuk menyatakan aturan "izin yang diperlukan" atau "semua" / "tidak satu pun" tanpa menulis perulangan manual.
Tantangan
SedangKamu sedang memeriksa akses ke sebuah dokumen. Baca tiga baris:
- Izin pengguna (dipisahkan dengan koma)
- Izin yang diperlukan (dipisahkan dengan koma)
- Izin yang dilarang (dipisahkan dengan koma)
Pengguna diberi akses jika:
- Izin mereka merupakan superset dari izin yang diperlukan (setiap izin yang diperlukan dimiliki)
- Izin mereka disjoint dengan izin yang dilarang
Cetak tepat satu dari berikut:
grantedmissing: <...>jika ada izin yang diperlukan yang belum dimiliki (diurutkan, dipisahkan dengan koma). Cetak ini meskipun izin yang dilarang juga dimiliki.forbidden: <...>jika tidak ada izin yang diperlukan yang belum dimiliki, tetapi ada izin terlarang yang dimiliki (diurutkan, dipisahkan dengan koma)
Untuk input read,write,admin / read,write / delete, output-nya adalah granted.
Untuk input read / read,write / delete, output-nya adalah missing: write.
Coba sendiri
let user = Set(readLine()!.components(separatedBy: ","))
let required = Set(readLine()!.components(separatedBy: ","))
let forbidden = Set(readLine()!.components(separatedBy: ","))
// TODO: granted | missing: ... | forbidden: ...
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami string
Jumlah dan indeksHuruf besar, huruf kecil, dan hapus spasiMencari dalam stringMemisahkan dan menggabungkanMengganti substringUlasan: Memeriksa nama pengguna4set
Membuat setGabungan dan IrisanSelisih dan Selisih SimetrisHimpunan Bagian dan Himpunan SupersetRingkasan: Filter Tag7Proyek: Pelacak Kebiasaan
Gambaran Umum ProyekTandai Selesai2Rentang dan Langkah
Rentang Tertutup vs Setengah TerbukaLangkahMetode RentangRentang dalam SwitchRangkuman: Kisi KalenderLatihan sendiri: Playground Swift