func main() { let input = "-6,-3--1,3-5,7-11,14,15,17-20" print("range: \(input)") var r = [] var last = 0 for part in input.Split(',') { var i = part[1..].IndexOf('-') if i == -1 { var n = Integer(part) if r.Length() > 0 { return print("duplicate value: \(n)") when last == n return print("values not ordered: \(last) > \(n)") when last > n } r.Add(n) last = n } else { var n1 = Integer(part[..i]) var n2 = Integer(part[(i + 2)..]) return print("invalid range: \(part)") when n2 < n1 + 2 if r.Length() > 0 { return print("duplicate value: \(n1)") when last == n1 return print("values not ordered: \(last) > \(n1)") when last > n1 } for i in n1..n2 { r.Add(i) } last = n2 } } print("expanded: \(r)") } main()