我已经坚持了一段时间。作为一项任务,我需要在不使用内置转置方法的情况下转置此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 "-----"
答案 0 :(得分:2)
尝试以下代码:
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
答案 1 :(得分:2)
我建议您使用以下方法替换方法transpose
。
def transpose
@array.first.zip(*@array[1..-1])
end
对(未定义)方法output_input
的需求并不明显。当然,您还需要一个initialize
方法来为实例变量@array
分配值。
我假设您被要求改进方法transpose
的实施;否则就没有理由不能使用Ruby的内置transpose
方法。