Arrays 我试图在数组=1中找到一个元素,并在它之前和之后更改该元素
我知道如何在数组中找到1,但我不知道如何选择前一个值和后一个值 我知道要做到这一点,我可能需要将行拆分,然后更改值,但我不确定如何在数组中选择上一个值Arrays 我试图在数组=1中找到一个元素,并在它之前和之后更改该元素,arrays,ruby,Arrays,Ruby,我知道如何在数组中找到1,但我不知道如何选择前一个值和后一个值 我知道要做到这一点,我可能需要将行拆分,然后更改值,但我不确定如何在数组中选择上一个值 def output_image @matrix.each do |row| puts row.join(" ") end end end image = Image.new([ [0, 0, 0, 0], [0, 1, 0, 0], [0, 0, 0, 1], [0, 0, 0, 0] ]) i
def output_image
@matrix.each do |row|
puts row.join(" ")
end
end
end
image = Image.new([
[0, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 0, 1],
[0, 0, 0, 0]
])
image.output_image
the expected result would be row 2 outputs [1, 1, 1, 0]
要在数组中查找元素,您可以使用索引,例如,对于
a=[1,2,3]
,您可以使用a[0]
获得第一个值。要获取上一个索引,可以使用a[i-1]
或a[i+1]
,其中i是当前索引
我建议使用类似
def output_image
@matrix.each do |row|
column_with_one_index = row.index(1)
next if column_with_one_index.nil?
row[column_with_one_index - 1] = 'prev'
row[column_with_one_index + 1] = 'next'
row.join(" ")
end
puts @matrix.inspect
end
结果将是:
[
[0, 0, 0, 0],
["prev", 1, "next", 0],
[0, 0, "prev", 1, "next"],
[0, 0, 0, 0]
]
或者,要准确返回您描述的结果,请使用:
class Image
def initialize(array)
@matrix = array
end
def output_image
@matrix.each_with_index do |row, i|
column_with_one_index = row.index(1)
next if column_with_one_index.nil?
row[column_with_one_index - 1] = 'prev'
row[column_with_one_index + 1] = 'next'
end
@matrix.map do |row| row.join(" ") end
end
end
image = Image.new([
[0, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 0, 1],
[0, 0, 0, 0]
])
puts image.output_image
然后,有了地图,结果将是
0 0 0 0
prev 1 next 0
0 0 prev 1 next
0 0 0 0
对不起,我弄明白了。我需要在一个循环中做一个循环。循环第一个数组,然后分别循环每一行,存储其中一行的值,然后使用行、列索引-1==1来更改我想要更改的值第3行呢?你不喜欢我的问题吗?好的,这里还有另一个问题:
Image[2]
?你能用我下面的例子吗?再次编辑我的答案,现在用一个希望有用的例子。