替换嵌套数组ruby中的元素

替换嵌套数组ruby中的元素,ruby,nested,Ruby,Nested,我很难找到代码中的问题所在。如果特定元素出现在宾果游戏板上,我想将其替换为“X”: class BingoBoard def initialize(board) @bingo_board = board end def number_letter @letter = ['B','I','N','G','O'].sample @number = rand(1..100) end def checker @number @bing

我很难找到代码中的问题所在。如果特定元素出现在宾果游戏板上,我想将其替换为“X”:

class BingoBoard

  def initialize(board)
    @bingo_board = board
  end

  def number_letter

    @letter = ['B','I','N','G','O'].sample
    @number = rand(1..100)

  end

  def checker
    @number
    @bingo_board.map! do |n|

      if n.include?(@number)

        n.map! { |x| x == @number ? 'X' : x}

      else

        n

      end
    end

  end

end
这是我用来检查我的代码是否正在运行的测试,但是X从来没有出现过,我已经检查了我的代码很多次了,但我不知道为什么…:

board = [[47, 44, 71, 8, 88],
        [22, 69, 75, 65, 73],
        [83, 85, 97, 89, 57],
        [25, 31, 96, 68, 51],
        [75, 70, 54, 80, 83]]

new_game = BingoBoard.new(board)

new_game.checker

如果有人能提供我所错过或没有看到的东西的见解,我将不胜感激

你从不用字母法打电话。在您的checker方法中,@number始终为零。@menelik tucker谢谢!这就是我所错过的,总是一些小事同样值得注意的是,这看起来并不是一个宾果棋盘,因为列1将被限制为值1..15,所以更好的棋盘初始化应该是这样的。Array.new5{| column | column_Array=column*15+1..column+1*15.to_a.shuffle;Array.new5{column_Array.pop}转置。这将产生一个不重复的准确宾果游戏板。此外,随机数的范围应为rand1..75,因为75是标准宾果棋盘的最大值。
class BingoBoard

  def initialize(board)
    @bingo_board = board
  end

  def number_letter

    @letter = ['B','I','N','G','O'].sample
    @number = rand(1..100)

  end

  def checker
    number_letter
    @bingo_board.each do |n|
      index = n.index(@number)
      n[index] = 'X' unless index.nil?
    end

  end

end