matt_neuburg
6/16/2009 5:50:00 PM
Array is an Enumerable so when you require 'enumerator' you get a bunch
of cool ways of slicing it up.
> 1/ I have an array and I want to extract every 4 element into another
> array :
>
> # r=red, g=green, b=blue, a=alpha
> img_data = [ "r1", "g1", "b1", "a1", "r2, "g2", "b2", "a2" ]
>
> => [ "a1", "a2" ] # the array of every four elements i.e. alpha data
result = img_data.enum_slice(4).map {|arr| arr[3]}
>
> It's like extracting the fourth column of a matrix of n rows and 4
> columns.
>
> 2/ Conversely, I have an array and I need to add elements at every 3
> elements
>
> img_data = [ "r1", "g1", "b1", "r2, "g2", "b2" ]
> alpha_data = [ "a1", "a2" ] # the elements to add
>
> => [ "r1", "g1", "b1", "a1", "r2, "g2", "b2", "a2" ]
result = img_data.enum_slice(3).zip(alpha_data).flatten
m.