Menu
CoddyTech

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)            // false

isSuperset(of:) adalah kebalikannya, "apakah aku memuat setiap elemen dari set lainnya?":

big.isSuperset(of: small)          // true

isDisjoint(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)       // true

Ketiga predikat ini adalah cara paling rapi untuk menyatakan aturan "izin yang diperlukan" atau "semua" / "tidak satu pun" tanpa menulis perulangan manual.

challenge icon

Tantangan

Sedang

Kamu sedang memeriksa akses ke sebuah dokumen. Baca tiga baris:

  1. Izin pengguna (dipisahkan dengan koma)
  2. Izin yang diperlukan (dipisahkan dengan koma)
  3. 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:

  • granted
  • missing: <...> 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: ...
quiz iconUji dirimu

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

Semua pelajaran di Logika dan Alur

Latihan sendiri: Playground Swift