En

Ensembles en Julia

1 exercice

À propos de Ensembles

Un Set est une collection d'éléments qui présente les propriétés suivantes :

  • Non ordonné.
  • Les éléments sont uniques, donc les tentatives d'ajouter des doublons sont silencieusement ignorées.
  • Il prend en charge de nombreuses opérations courantes sur les ensembles mathématiques.

On les crée avec le constructeur Set(), en utilisant n'importe quel itérateur comme paramètre.

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

On ajoute de nouveaux éléments avec push!() (comme pour les tableaux), et on les supprime avec 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

Opérations sur les ensembles

Comme pour plusieurs autres types de collections, on vérifie l'appartenance avec l'opérateur in ou ∈ (utilise \in puis tabulation pour obtenir le symbole).

julia> 3 ∈ s1
true

Les opérations suivantes sur des paires d'ensembles sont prises en charge (les raccourcis pour saisir le symbole de l'opérateur sont indiqués entre parenthèses).

  • union(A, B) ou A ∪ B (\cup) : tous les éléments de A ou de B, ou des deux.
  • intersect(A, B) ou A ∩ B (\cap) : tous les éléments communs à A et à B.
  • setdiff(A, B) (pas de symbole) : les éléments qui sont dans A mais pas dans B.
  • symdiff(A, B) (pas de symbole) : les éléments qui sont dans A ou dans B, mais pas dans les deux.
  • issubset(A, B) ou A ⊆ B (\subseteq) ou B ⊇ A (\supseteq) : true si tous les éléments de A sont aussi dans B.
  • issetequal(A, B) (pas de symbole) : true si A et B contiennent exactement les mêmes éléments.
  • isdisjoint(A, B) (pas de symbole) : true si A et B n'ont aucun élément en commun (l'intersection est donc vide).
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

Il existe aussi des versions mutantes de beaucoup d'entre elles, avec un ! ajouté au nom de la fonction. Pour obtenir la liste complète des fonctions, consulte le manuel.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends Ensembles