Menu
Coddy logo textTech

Podzbiór i nadzbiór

Część sekcji Logika i przepływ programu ścieżki Swift w Coddy. Lekcja 21 z 56.

Oprócz łączenia zbiorów możesz je również porównywać.

isSubset(of:) odpowiada na pytanie: „czy każdy z moich elementów znajduje się również w drugim zbiorze?”

let small: Set = [1, 2]
let big:   Set = [1, 2, 3, 4]
small.isSubset(of: big)            // true
big.isSubset(of: small)            // false

isSuperset(of:) działa odwrotnie: „czy zawieram każdy element drugiego zbioru?”:

big.isSuperset(of: small)          // true

isDisjoint(with:) zwraca true, gdy oba zbiory nie mają żadnych wspólnych elementów:

let evens: Set = [2, 4, 6]
let odds:  Set = [1, 3, 5]
evens.isDisjoint(with: odds)       // true

Te trzy predykaty to najprostszy sposób na wyrażenie reguł „wymagane uprawnienia”, „wszystkie” lub „żadne” bez pisania ręcznej pętli.

challenge icon

Wyzwanie

Średni

Sprawdzasz dostęp do dokumentu. Odczytaj trzy wiersze:

  1. Uprawnienia użytkownika (oddzielone przecinkami)
  2. Wymagane uprawnienia (oddzielone przecinkami)
  3. Zabronione uprawnienia (oddzielone przecinkami)

Użytkownik otrzymuje dostęp, gdy:

  • Jego uprawnienia są nadrzędne wobec wymaganych (ma wszystkie wymagane uprawnienia)
  • Jego uprawnienia są rozłączne z zabronionymi

Wypisz dokładnie jedną z wartości:

  • granted
  • missing: <...>, gdy brakuje wymaganych uprawnień (posortowanych i oddzielonych przecinkami). Wypisz to nawet wtedy, gdy użytkownik ma również zabronione uprawnienia.
  • forbidden: <...>, gdy nie brakuje żadnych wymaganych uprawnień, ale użytkownik ma zabronione uprawnienia (posortowane i oddzielone przecinkami)

Dla danych wejściowych read,write,admin / read,write / delete wynikiem jest granted.

Dla danych wejściowych read / read,write / delete wynikiem jest missing: write.

Spróbuj swoich sił

let user = Set(readLine()!.components(separatedBy: ","))
let required = Set(readLine()!.components(separatedBy: ","))
let forbidden = Set(readLine()!.components(separatedBy: ","))

// TODO: granted | missing: ... | forbidden: ...
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Edytor online Swift