gpt4 book ai didi

ruby - 在大多数情况下都可以尝试模糊图像

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:09:34 25 4
gpt4 key购买 nike

我正在尝试围绕多维数组中的现有数组创建数组。它似乎有效,但会产生下面解释的问题。

class Image


def initialize(pixle)
@pixle = pixle
end

def output_image
@pixle.each do |row|
puts row.join("")
end
end

def find_ones
ones = []
@pixle.each_with_index do |row, i|
row.each_with_index do |val, j|
if val == 1
ones << [i, j]
end
end
end


ones.each do |i, j|
@pixle[i][j - 1] = 1 unless j == 0
@pixle[i][j + 1] = 1 unless j == -1
@pixle[i - 1][j] = 1 unless i == 0
@pixle[i + 1][j] = 1 unless i == -1
end
output_image
end

end

image = Image.new([
[1, 0, 0, 0],
[0, 0, 0, 1], #this one adds extra one outside array
[0, 0, 0, 0],
[0, 0, 0, 1] #if last index is 0 it works
])

image.find_ones

此代码适用于大多数情况,如果将 1 添加到最后一个数组的最后一个索引,则会引发错误...如果将 1 放入其他数组的最后一个索引,也会添加一个额外的 1。

expected result
1101
1011
0001
0011

最佳答案

我认为问题出在这里:

   @pixle[i][j + 1] = 1 unless j == -1
@pixle[i + 1][j] = 1 unless i == -1

i 是行,j 是找到一个的列。ij 必须针对矩阵的行数和列数进行测试,以避免在边界上添加额外的点。如果你改成

   @pixle[i][j + 1] = 1 unless j == 3
@pixle[i + 1][j] = 1 unless i == 3

它按预期工作。更一般地说,你应该选择矩阵的大小并在你的陈述中使用它,例如

@rows = pixle.size
@cols = pixle[0].size

所以,既然我们需要考虑索引,它可以变成:

@pixle[i][j + 1] = 1 unless j == @cols -1
@pixle[i + 1][j] = 1 unless i == @rows - 1

关于ruby - 在大多数情况下都可以尝试模糊图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51795106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com