しばらくこれにこだわってしまいました。割り当てとして、組み込みの転置メソッドを使用せず、関数名/出力を変更せずに、この 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