Advertisement
Guest User

Untitled

a guest
Feb 13th, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.60 KB | None | 0 0
  1. // Given array of 2-tuples, return two arrays
  2. func unzip<T, U>(array: [(T, U)]) -> ([T], [U]) {
  3. var t = Array<T>()
  4. var u = Array<U>()
  5. for (a, b) in array {
  6. t.append(a)
  7. u.append(b)
  8. }
  9. return (t, u)
  10. }
  11.  
  12. // Given sequence of 2-tuples, return two arrays
  13. func unzip<T, U>(sequence: SequenceOf<(T, U)>) -> ([T], [U]) {
  14. var t = Array<T>()
  15. var u = Array<U>()
  16. for (a, b) in sequence {
  17. t.append(a)
  18. u.append(b)
  19. }
  20. return (t, u)
  21. }
  22.  
  23. // Given array of 3-tuples, return three arrays
  24. func unzip3<T, U, V>(array: [(T, U, V)]) -> ([T], [U], [V]) {
  25. var t = Array<T>()
  26. var u = Array<U>()
  27. var v = Array<V>()
  28. for (a, b, c) in array {
  29. t.append(a)
  30. u.append(b)
  31. v.append(c)
  32. }
  33. return (t, u, v)
  34. }
  35.  
  36. // Given sequence of 3-tuples, return three arrays
  37. func unzip3<T, U, V>(sequence: SequenceOf<(T, U, V)>) -> ([T], [U], [V]) {
  38. var t = Array<T>()
  39. var u = Array<U>()
  40. var v = Array<V>()
  41. for (a, b, c) in sequence {
  42. t.append(a)
  43. u.append(b)
  44. v.append(c)
  45. }
  46. return (t, u, v)
  47. }
  48.  
  49. let elements = [(0, "Zero"), (1, "One"), (2, "Two")]
  50. let (numbers, strings) = unzip(elements)
  51. println("numbers = \(numbers)")
  52. println("strings = \(strings)")
  53. // numbers = [0, 1, 2]
  54. // strings = ["Zero", "One", "Two]
  55.  
  56.  
  57. let elements3 = [(0, "Zero", "A"), (1, "One", "B"), (2, "Two", "C")]
  58. let (numbers3, strings3, letters3) = unzip3(elements3)
  59. println("numbers3 = \(numbers3)")
  60. println("strings3 = \(strings3)")
  61. println("letters3 = \(letters3)")
  62. // numbers3 = [0, 1, 2]
  63. // strings3 = ["Zero", "One", "Two]
  64. // letters3 = ["A", "B", "C"]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement