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

48 lines
1.3 KiB
Julia
Raw Normal View History

2019-09-12 16:32:16 +02:00
# 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