【问题标题】:How To Check For 4 In Row In A Multidimensional Array (Ruby)如何检查多维数组中的 4 行 (Ruby)
【发布时间】:2018-08-27 11:50:14
【问题描述】:
double_array = [
  ["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"],
]

假设这个数组中的数字变化如下:

double_array = [
      ["1", "0", "0", "0", "0"],
      ["0", "1", "0", "0", "0"],
      ["0", "0", "1", "0", "0"],
      ["0", "0", "0", "1", "0"],
      ["0", "0", "0", "0", "0"],
    ]

我如何能够通过某种 if 语句来检测到这一点? 如果有四个连续对角线做[在此处插入动作]。

垂直或水平方向也是如此:

double_array = [
      ["1", "0", "0", "0", "0"],
      ["1", "0", "0", "0", "0"],
      ["1", "0", "0", "0", "0"],
      ["1", "0", "0", "0", "0"],
      ["0", "1", "1", "1", "1"],
    ]

我更喜欢尽可能简单的方法。

【问题讨论】:

  • 告诉我们你尝试了什么,你是否卡在某个点上?
  • 不清楚您所说的“在某一点上具有相同的值”是什么意思。
  • 例如,如果我想检查从 0 到 3 的 double_array[3](向下的第四个)的值。或者,如果我想检查双精度数组中每个数组的索引 0。
  • 在某一点之前的相同值是什么意思? double_array[3] 表示第四行,所以你想要第四行的所有值吗?问题不是很清楚。请提供更多关于您期望的示例,并添加一些您尝试过的代码。
  • 是的,我指的是第四行,但我也指的是该行中的前四个索引。

标签: arrays ruby multidimensional-array rubymine


【解决方案1】:
last_row_ndx = double_array.size-1
  #=> 4
last_col_ndx = double_array.first.size-1
  #=> 4

(0..last_row_ndx).each_with_object(Hash.new { |h,k| h[k] = [] }) do |i,h|
  (0..last_col_ndx).each do |j|
    v = double_array[i][j]
    h[v] << [[i-1,j], [i,j]] if i > 0 && v == double_array[i-1][j]
    h[v] << [[i,j-1], [i,j]] if j > 0 && v == double_array[i][j-1]
  end
end
  #=> {"1"=>[[[0, 0], [1, 0]], [[1, 0], [1, 1]], [[1, 0], [2, 0]], 
  #          [[2, 0], [3, 0]], [[3, 0], [3, 1]], [[2, 2], [3, 2]],
  #          [[3, 1], [3, 2]], [[3, 2], [3, 3]]], 
  #    "4"=>[[[0, 3], [1, 3]], [[1, 3], [2, 3]]],
  #    "0"=>[[[0, 4], [1, 4]], [[1, 4], [2, 4]], [[2, 4], [3, 4]],
  #          [[4, 0], [4, 1]], [[4, 1], [4, 2]], [[4, 2], [4, 3]],
  #          [[3, 4], [4, 4]], [[4, 3], [4, 4]]]}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多