Let's start with the easy stuff. Peter Fitzgibbons wrote: > A.row(1) > ==> [10, 11, 20, 21] > a[0] => [10, 11, 20, 21] def a.row i at i-1 end a.row 1 => [10, 11, 20, 21] > A.col(1) > ==> [10, 12, 30, 32] > > > a.transpose[0] => [10, 12, 30, 32] def a.col i transpose[i-1] end a.col 1 => [10, 12, 30, 32] As far as the `grid' method goes, do you want it to always do a 2x2 square or are you looking for some other math here? def a.grid i i -= 1 (0..1).map do |j| at(((i/2)*2)+j)[(i%2)*2,2] end end _why