samlerepo/2019/Julia/Code/7.sets.jl

48 lines
1.3 KiB
Julia
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Sets are created from lists of elements and duplicates are removed
s = Set(['a', 'b', 'c', 'b'])
display(s)
@show 'b' in s
# As with other collections, elements can be added with push!
push!(s, 'd')
display(s)
# And elements are removed with delete!
delete!(s, 'b')
display(s)
# An empty set can be made just like an empty dict, but again this forces
# it to accept elements of type Any, which can be an minor slowdown
s = Set()
# This is of course fixed by infering the type when creating the dict
s = Set{Int}()
push!(s, 2)
display(s)
# Usual set operations like union, intersect, difference and checking if
# one is a subset of another, are all implemented, many with
# unicode infix operators
s1 = Set([1, 2, 4, 8, 16])
s2 = Set([2, 3, 5, 16])
@show union(s1, s2) # Takes the set union
@show s1 s2 # Equvialent to the line above (\cup for the unicode macro)
@show intersect(s1, s2) # Set intesect
@show s1 s2 # Unicode version (\cap)
@show setdiff(s1, s2) # Set difference. No unicode replacement for this one
@show symdiff(s1, s2) # symetric difference. No unicode here either
union!(s1, s2) # Equvialent to s1 = s1 s2
@show s1
intersect!(s1, s2) # Equvialent to s1 = s1 ∩ s2
@show s1
# Check if s1 is a subset of s2. (\subseteq)
@show s1 s2