我需要创建一个0和1的2D网格来表示图像,并创建一个模糊方法,将1(左,右,上或下)旁边的任何0更改为1,如下所示:
0000 => 0000
0000 0010
0010 0111
0000 0010
Run Code Online (Sandbox Code Playgroud)
接下来,我必须允许用户传入一个允许模糊在每个方向上扩展多个空格的数字.如果我打电话image.blur(2),它会在每个方向上延伸2个空格,但是每个第一步都必须再次调用模糊以考虑对角线.例如:
00000000 => 00010000
00000000 00111000
00010000 01111100
00000000 00111000
00000000 00010000
Run Code Online (Sandbox Code Playgroud)
这是我的代码.
class Image
attr_accessor :picture
def initialize(*rows)
@picture = *rows
end
def output_image
@picture.each_index do |i|
puts @picture[i].join
end
end
def blur(distance=1)
@blurred_image = Array.new(@picture.length, 0) {Array.new(@picture[0].length, 0)} #create new array of zeroes the size of @picture
@picture.each_index do |i|
@picture[i].each_index do |j|
if @picture[i][j] == 1
@blurred_image[i][j] = 1 if @blurred_image[i][j]
@blurred_image[i][j-1] = 1 if …Run Code Online (Sandbox Code Playgroud)