Co

Conjuntos em Julia

1 exercício

Sobre Conjuntos

Um Set é uma coleção de itens com as seguintes propriedades:

  • Sem ordem.
  • As entradas são únicas, por isso as tentativas de adicionar duplicados são ignoradas silenciosamente.
  • Suporta muitas das operações comuns em conjuntos matemáticos.

Cria-os com o construtor Set(), usando qualquer iterador como parâmetro.

julia> s1 = Set(1:4)
Set{Int64} with 4 elements:
  4
  2
  3
  1

Adiciona novos elementos com push!() (tal como acontece com os arrays) e remove-os com delete!().

julia> push!(s1, 5)
Set{Int64} with 5 elements:
  5
  4
  2
  3
  1

# Duplicates are ignored
julia> push!(s1, 3)
Set{Int64} with 5 elements:
  5
  4
  2
  3
  1

julia> delete!(s1, 5)
Set{Int64} with 4 elements:
  4
  2
  3
  1

julia> length(s1)  # length counts entries, despite the non-sequential type
4

Operações com conjuntos

Tal como acontece com vários outros tipos de coleções, verifica se um elemento pertence ao conjunto com o operador in ou ∈ (escreve \in e depois tab para obter o símbolo).

julia> 3 ∈ s1
true

São suportadas as seguintes operações sobre pares de conjuntos (os atalhos para o símbolo do operador são mostrados entre parênteses).

  • union(A, B) ou A ∪ B (\cup): todas as entradas de A, de B, ou de ambos.
  • intersect(A, B) ou A ∩ B (\cap): todas as entradas comuns a A e a B.
  • setdiff(A, B) (sem símbolo): as entradas que estão em A mas não em B.
  • symdiff(A, B) (sem símbolo): as entradas que estão em A ou em B, mas não em ambos.
  • issubset(A, B) ou A ⊆ B (\subseteq) ou B ⊇ A (\supseteq): true se todas as entradas de A também estiverem em B.
  • issetequal(A, B) (sem símbolo): true se A e B contiverem exatamente as mesmas entradas.
  • isdisjoint(A, B) (sem símbolo): true se A e B não tiverem entradas em comum (ou seja, se a interseção for vazia).
s1 = Set(1:4)
s2 = Set(3:6)

julia> s1 ∪ s2  # union
Set{Int64} with 6 elements:
  5
  4
  6
  2
  3
  1

julia> s1 ∩ s2  # intersect
Set{Int64} with 2 elements:
  4
  3
  
julia> setdiff(s1, s2)
Set{Int64} with 2 elements:
  2
  1

julia> symdiff(s1, s2)
Set{Int64} with 4 elements:
  5
  6
  2
  1
  
julia> s1 ⊇ s2  # issubset
false

Existem também versões que alteram o conjunto para muitas destas operações, com ! acrescentado ao nome da função. Consulta o manual para veres a lista completa de funções.

Editar via GitHub A ligação abre numa nova janela ou separador

Aprende Conjuntos