我试图找出如何形成一个数组,该数组收集特定对象的每个索引(在本例中为单个字母),它出现在嵌套的数组中。例如,使用下面的数组,
boggle_board = [["P", "P", "X", "A"],
["V", "F", "S", "Z"],
["O", "P", "W", "N"],
["D", "H", "L", "E"]]
我希望像boggle_board.include?("P")
之类的东西能够返回嵌套的索引数组[[0,0][0,1],[2,1]]
。关于如何做到这一点的任何想法?
答案 0 :(得分:1)
现在没有什么超级优雅能让我想起来。这似乎有效:
def indices_of(board, letter)
indices = []
board.each_with_index do |ar, i|
ar.each_with_index do |s, j|
indices.push([i, j]) if s == letter
end
end
indices
end
boggle_board = [["P", "P", "X", "A"],
["V", "F", "S", "Z"],
["O", "P", "W", "N"],
["D", "H", "L", "E"]]
indices_of(boggle_board, "P")
# => [[0, 0], [0, 1], [2, 1]]
答案 1 :(得分:1)
我会使用Matrix#each_with_index
。以下代码更具Rubyistic:
require "matrix"
m = Matrix[["P", "P", "X", "A"],
["V", "F", "S", "Z"],
["O", "P", "W", "N"],
["D", "H", "L", "E"]]
ar = []
m.each_with_index {|e, row, col| ar << [row,col] if e == "P"}
ar #=> [[0, 0], [0, 1], [2, 1]]