123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- include sets
- let
- s1: TSet[int] = toSet([1, 2, 4, 8, 16])
- s2: TSet[int] = toSet([1, 2, 3, 5, 8])
- s3: TSet[int] = toSet([3, 5, 7])
- block union:
- let
- s1_s2 = union(s1, s2)
- s1_s3 = s1 + s3
- s2_s3 = s2 + s3
- assert s1_s2.len == 7
- assert s1_s3.len == 8
- assert s2_s3.len == 6
- for i in s1:
- assert i in s1_s2
- assert i in s1_s3
- for i in s2:
- assert i in s1_s2
- assert i in s2_s3
- for i in s3:
- assert i in s1_s3
- assert i in s2_s3
- assert((s1 + s1) == s1)
- assert((s2 + s1) == s1_s2)
- block intersection:
- let
- s1_s2 = intersection(s1, s2)
- s1_s3 = intersection(s1, s3)
- s2_s3 = s2 * s3
- assert s1_s2.len == 3
- assert s1_s3.len == 0
- assert s2_s3.len == 2
- for i in s1_s2:
- assert i in s1
- assert i in s2
- for i in s1_s3:
- assert i in s1
- assert i in s3
- for i in s2_s3:
- assert i in s2
- assert i in s3
- assert((s2 * s2) == s2)
- assert((s3 * s2) == s2_s3)
- block symmetricDifference:
- let
- s1_s2 = symmetricDifference(s1, s2)
- s1_s3 = s1 -+- s3
- s2_s3 = s2 -+- s3
- assert s1_s2.len == 4
- assert s1_s3.len == 8
- assert s2_s3.len == 4
- for i in s1:
- assert i in s1_s2 xor i in s2
- assert i in s1_s3 xor i in s3
- for i in s2:
- assert i in s1_s2 xor i in s1
- assert i in s2_s3 xor i in s3
- for i in s3:
- assert i in s1_s3 xor i in s1
- assert i in s2_s3 xor i in s2
- assert((s3 -+- s3) == initSet[int]())
- assert((s3 -+- s1) == s1_s3)
- block difference:
- let
- s1_s2 = difference(s1, s2)
- s1_s3 = difference(s1, s3)
- s2_s3 = s2 - s3
- assert s1_s2.len == 2
- assert s1_s3.len == 5
- assert s2_s3.len == 3
- for i in s1:
- assert i in s1_s2 xor i in s2
- assert i in s1_s3 xor i in s3
- for i in s2:
- assert i in s2_s3 xor i in s3
- assert((s2 - s2) == initSet[int]())
- assert((s1 - s3 - s1) == s1 -+- s3)
- block disjoint:
- assert(not disjoint(s1, s2))
- assert disjoint(s1, s3)
- assert(not disjoint(s2, s3))
- assert(not disjoint(s2, s2))
|