Can you change your underlying data structure? Most efficient would be
to let the data be indexed by the (x,y) coordinates (either using a
two dimensional array, or a hash of {[x, y] => value}). If you have to
keep the list of [[x, y, value]] representation, you could run a merge
sort on the two lists, and apply the overlay if you hit cells with
equal x and y values. This assumes that both lists are sorted, of
course.

martin

On Tue, May 1, 2012 at 7:50 PM, Craig Law <lists / ruby-forum.com> wrote:
> Hi
>
> Hoping someone can give me some direction with regards to overwriting
> one Ruby array of arrays with the contents of another.
>
> As an example I have an array of arrays ...
>
> [[1, 1, "X"], [1, 2, "X"], [1, 3, "X"], [2, 1, "X"], [2, 2, "X"], [2, 3,
> "X"], [3, 1, "X"], [3, 2, "X"], [3, 3, "X"]]
>
> The first two values of the array represent x, y coordinates to build a
> 3 x 3 grid.
>
> I have another array of arrays ...
>
> [[1, 1, "O"], [2, 1, "O"], [2, 2, "O"], [2, 3, "O"], [3, 3, "O"]]
>
> ... which I'd like to merge/overwrite/whatever based ONLY on the x, y
> coordinates which will produce the final array (still a 3 x 3 grid) ...
>
> [[1, 1, "O"], [1, 2, "X"], [1, 3, "X"], [2, 1, "O"], [2, 2, "O"], [2, 3,
> "O"], [3, 1, "X"], [3, 2, "X"], [3, 3, "O"]]
>
> This is just an example and my project will be working with grids that
> may be as large as 50 x 100 and the array of arrays that will overwrite
> might have 1000+ items.
>
> Can anyone point me in the right direction as to what would be the most
> efficient way of achieving this?
>
> Many thanks
>
> Craig
>
> --
> Posted via http://www.ruby-forum.com/.
>