2011-01-29 4 views
1

boardwidth가 나는 1X9 배열에 의해 3 × 3 행렬을 represend 3루비, fixnum을 배열로 변환 할 수 없습니까? 그러나 배열

이다

시험 :

test "the row checking to see if we have a winner (incorrect)" do 
    board = Board.new 

    board.state = [0,0,1,0,0,1,0,0,1] 
    assert false ==board.check_rows_for_winner 
    end 

관련 코드

@board_layout = [] 

def init_board 
    @board_layout = Array.new(@@board_width * @@board_width) 
    end 

    def state=(custom_board) 
    @board_layout = custom_board 
    end 


def check_rows_for_winner 
    self.width.times do |row| 
    if @board_layout.transpose[row].uniq.size == 1 then 
     return true 
    end 
    end 

    return false 
end 

오류 :

TypeError: can't convert Fixnum into Array 
    app/models/board.rb:39:in `transpose' 
    app/models/board.rb:39:in `check_rows_for_winner' 
    app/models/board.rb:38:in `times' 
    app/models/board.rb:38:in `check_rows_for_winner' 

답변

2

@ array.tranpose를 사용하려면 @array가 배열의 배열이어야합니다. 정상 배열에서는이 오류 메시지가 나타납니다. 테스트에서

당신이 (가) @board_layout에 대해 다음 설정됩니다 :

board.state = [0,0,1,0,0,1,0,0,1] 

하고

@board_layout.transpose[row] 

을 할 때 오류 메시지가 나타납니다

편집

.

관련 문제