title: Reverse Zip a Collection
body: <p>I'm looking to do a "reverse zip" on a collection. Essentially meaning:</p>
  
  <pre><code>let a = [1, 2, 3, 4, 5, 6, 7]
  let (left, right) = a.reverseZip()
  
  print(left)  // [1, 3, 5, 7] 
  print(right) // [2, 4, 6]
  </code></pre>
  
  <p>I have an implementation that seems to work (see my answer listed below), but I have two questions that I'm hoping we could discuss:</p>
  
  <ol>
  <li>What's the correct name for this kind of operation? It's not exactly the opposite of <code>zip</code> (and I'm certain this pattern exists elsewhere in another functional language)</li>
  <li>Is there a more optimal algorithm for this method?</li>
  </ol>