Menu
Coddy logo textTech

Sottoinsieme e sovrainsieme

Fa parte della sezione Logica e flusso del percorso Swift di Coddy. Lezione 21 di 56.

Oltre a combinare gli insiemi, puoi anche confrontarli.

isSubset(of:) risponde a «ogni elemento del mio insieme è presente anche nell’altro?»

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

isSuperset(of:) è il contrario: «contengo ogni elemento dell'altro insieme?»:

big.isSuperset(of: small)          // true

isDisjoint(with:) restituisce true quando i due insiemi non hanno alcun elemento in comune:

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

Questi tre predicati sono il modo più chiaro per esprimere regole di «permessi richiesti» o «tutti» / «nessuno» senza scrivere un ciclo manuale.

challenge icon

Sfida

Medio

Stai verificando l'accesso a un documento. Leggi tre righe:

  1. Le autorizzazioni dell'utente (separate da virgole)
  2. Le autorizzazioni richieste (separate da virgole)
  3. Le autorizzazioni vietate (separate da virgole)

L'accesso viene concesso all'utente quando:

  • Le sue autorizzazioni sono un superset di quelle richieste (ogni autorizzazione richiesta è presente)
  • Le sue autorizzazioni sono disgiunte da quelle vietate

Stampa esattamente uno tra:

  • granted
  • missing: <...> quando mancano autorizzazioni richieste (ordinate, separate da virgole). Stampa questo anche se sono presenti autorizzazioni vietate.
  • forbidden: <...> quando non manca nessuna autorizzazione richiesta, ma sono presenti autorizzazioni vietate (ordinate, separate da virgole)

Per l'input read,write,admin / read,write / delete, l'output è granted.

Per l'input read / read,write / delete, l'output è missing: write.

Provalo tu

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

// TODO: granted | missing: ... | forbidden: ...
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Playground Swift