組み込みメソッドを使用せずにRuby 2D配列を転置する

概要

しばらくこれにこだわってしまいました。割り当てとして、組み込みの転置メソッドを使用せず、関数名/出力を変更せずに、この 2D 配列を転置する必要があります。思っているよりもずっと簡単なはずだと思います…

class Image 

def transpose
     @array.each_with_index do |row, row_index|
      row.each_with_index do |column, col_index|
        @array[row_index] = @array[col_index]
      end
    end 
  end 
end

image_transpose = Image.new([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])

print "Image transpose"
puts

image_transpose.output_image

puts "-----" 

image_transpose.transpose
image_transpose.output_image

puts "-----"

解決策

以下のコードを試してください。

class Image 

  def initialize(array)
    @array = array
  end

  def transpose
    _array = @array.dup
    @array = [].tap do |a|
      _array.size.times{|t| a << [] }
    end
    _array.each_with_index do |row, row_index|
      row.each_with_index do |column, col_index|
        @array[row_index][col_index] = _array[col_index][row_index]
      end
    end 
  end


end

image_transpose = Image.new([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
image_transpose.transpose