ruby 图像模糊挑战的重构代码(包括曼哈顿距离)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby 图像模糊挑战的重构代码(包括曼哈顿距离)相关的知识,希望对你有一定的参考价值。

class Image
  attr_accessor :array

  def initialize(array)
    @array = array
  end

  def blur(distance = 1)
    distance.times do
      transform
    end
  end

  def output_image
    @array.each {|item| puts "#{item.join()}"}
  end

  private

  def transform
  # length of one secondary array
    width = array[0].length

  # number of secondary arrays (rows)
    height = array.length

    ones_array = []

    array.each_with_index do |row, y|
      row.each_with_index do |value, x|
        ones_array << [x, y] if value == 1
      end
    end

    ones_array.each do |coordinate|
      x, y = coordinate

      array[y][x + 1] = 1 unless (x + 1 >= width)
      array[y][x - 1] = 1 unless (x - 1 < 0)
      array[y + 1][x] = 1 unless (y + 1 >= height)
      array[y - 1][x] = 1 unless (y - 1 < 0)
    end
  end
end


image = Image.new([
  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
])

image.blur(3)
image.output_image

以上是关于ruby 图像模糊挑战的重构代码(包括曼哈顿距离)的主要内容,如果未能解决你的问题,请参考以下文章

ruby 用于重构面包店挑战的辅导/ GPS资源。可能的解决方案(高级)

Wannafly挑战赛18 C - 异或和

[ CS231n ] 图像分类

matlab中如何用代码表示两个数之间的街区(曼哈顿)距离

Python编程题:编程求两点之间的曼哈顿距离?

机器学习中“距离与相似度”计算汇总