2015-04-13 5 views
1

У меня возникли проблемы с поиском места, где моя проблема находится в моем коде. Я хочу, чтобы заменить отдельные элементы с «X», если они появляются на лото борту:замена элемента в вложенном массиве ruby ​​

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 

Если кто-нибудь может дать представление о том, что мне не хватает или не видеть, я бы очень признателен!

+1

Вы никогда не называете свой метод 'number_letter'. В вашем методе 'checker' @number это все время. –

+0

@menelik tucker спасибо! это то, чего мне не хватало – user1762229

+0

Это всегда мелочи. :) –

ответ

0
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