Documentation for sub roundrobin
Documentation for sub roundrobin, assembled from the following types:
method roundrobin(List: --> Seq)
Builds a 'list of lists', returned as a sequence, from multiple input lists or other iterables.
roundrobin returns an identical result to that of zip, except when the input lists have an unequal number of elements.
say roundrobin <a b c>, <d e f>, <g h i>;# OUTPUT: «((a d g) (b e h) (c f i))␤»say .join(",") for roundrobin([1, 2], [2, 3], [3, 4]);# OUTPUT: «1,2,3␤# 2,3,4␤»
roundrobin does not terminate once one or more of the input lists become exhausted, but proceeds until all elements from all lists have been processed.
say roundrobin <a b c>, <d e f m n o p>, <g h i j>;# OUTPUT: «((a d g) (b e h) (c f i) (m j) (n) (o) (p))␤»say .join(",") for roundrobin([1, 2], [2, 3, 57, 77], [3, 4, 102]);# OUTPUT: «1,2,3␤# 2,3,4␤# 57,102␤# 77␤»
Therefore no data values are lost due in the 'zipping' operation. A record of which input list provided which element cannot be gleaned from the resulting sequence, however.
roundrobin can be useful in combining messy data to the point where a manual post-processing step can then be undertaken.