今回のお題はこちら
今回はまった点は以下。
・Rubyでは、改行を挟んで文を続けたい場合は「\」を改行前に打つ
普段C#とか書いてたら忘れますな。。
$lake = [ ["W", ".", ".", ".", ".", ".", ".", ".", ".", "W", "W", "."] \ ,[".", "W", "W", "W", ".", ".", ".", ".", ".", "W", "W", "W"] \ ,[".", ".", ".", ".", "W", "W", ".", ".", ".", "W", "W", "."] \ ,[".", ".", ".", ".", ".", ".", ".", ".", ".", "W", "W", "."] \ ,[".", ".", ".", ".", ".", ".", ".", ".", ".", "W", ".", "."] \ ,[".", ".", "W", ".", ".", ".", ".", ".", ".", "W", ".", "."] \ ,[".", "W", ".", "W", ".", ".", ".", ".", ".", "W", "W", "."] \ ,["W", ".", "W", ".", "W", ".", ".", ".", ".", ".", "W", "."] \ ,[".", "W", ".", "W", ".", ".", ".", ".", ".", ".", "W", "."] \ ,[".", ".", "W", ".", ".", ".", ".", ".", ".", ".", "W", "."] \ ] #input Height = $lake[0].length - 1 Width = $lake.length - 1 def dfs(x, y) for i in ([0, x - 1].max)..([Width, x + 1].min) for j in ([0, y - 1].max)..([Height, y + 1].min) if $lake[i][j] == "W" $lake[i][j] = "." dfs(i,j) end end end end count = 0 for x in 0..Width for y in 0..Height if $lake[x][y] == "W" dfs(x, y) count += 1 end end end puts count