Ruby에서 고모 쿠 게임을 구현하고 있습니다.이 게임은 15x15 보드에서 실행되는 tic-tac-toe의 변형이며, 5 O 또는 X를 수평, 수직 또는 수직으로 배치 한 첫 번째 플레이어입니다. 대각선 행 승.대각선 행의 루비 수 중복
첫째, 변수에 매트릭스를 할당하고 0에서 224까지 숫자를 채우기 때문에, 거기에 더 반복은없고 나중에
gomoku = Matrix.zero(15)
num = 0
15.times do |i|
15.times do |j|
gomoku[i, j] = num
num += 1
end
end
다음 선수가 번갈아 가며, 모든 후 나는 차례를 셀 수 방법 win?
def win? matrix
15.times do |i|
return true if matrix.row_vectors[i].chunk{|e| e}.map{|_, v| v.length}.max > 4 # thanks to sawa for this way of counting adjacent duplicates
return true if matrix.column_vectors[i].chunk{|e| e}.map{|_, v| v.length}.max > 4
end
return false
end
나는 아마 잘못하고 있어요 것을 알고 있지만, 제안은 환영하지만 내 문제는, 그 아니다으로 승리를 확인합니다. 문제는 대각선 행입니다. 대각선 줄에서 중복 수를 계산하는 방법을 모르겠습니다.
'Matrix'는 불변이고'gomoku [i, j] = num'을 할 수 없어야합니다 ... – Amadan
틀렸어, 방금 시도 했어 – budkin
[표준 Ruby'Matrix' ] (http://www.ruby-doc.org/stdlib-2.1.2/libdoc/matrix/rdoc/Matrix.html#method-i-clone) : "... 이렇게 할 이유가 없어야합니다. 왜냐하면 * 행렬은 불변입니다 *. " 또한'Matrix # [] ='가 존재하지 않는 것에 유의하십시오. '[0, 0] = 1 ''은 Matrix [[0, 0], [0, 0] = 1을 호출하는 private 메소드'[] ='를 반환 할 것이다. 0]] : 행렬 (NoMethodError)'. 반면에 라이브러리를 사용하는 경우이를 지적하고 싶을 수도 있습니다. – Amadan