島の数をカウントする どう書く?org
m×nの長方形のマス目のうちいくつかを黒く塗りつぶします。
このとき、白の島、黒の島がそれぞれいくつあるかをカウントしてください。ただし、2つのマスは、同色マスの上下左右の移動で移れるとき、
同じ島にあると定義します。例:
□■■□
□□■□
□■□□
□■■□
白の島は2つ
黒の島は2つ例:
□□□□
■□■□
□■□□
□□□□
白の島は1つ
黒の島は3つ
def text = """
□■■□
■□□■
□□■□
□■■□"""
def score = ["■": 0, "□": 0]
board = text.readLines().collect { it.split("")[1..-1] }
XMAX = board.size() - 1
YMAX = board[0].size() - 1
def eat(mark, x, y) {
board[x][y] = "×"
// 周辺もいただきます♪
[["x": x - 1, "y": y], ["x": x + 1, "y": y], ["x": x, "y": y - 1], ["x": x, "y": y + 1]].findAll {
(it.x in 0..XMAX) & amp; & amp; (it.y in 0..YMAX) & amp; & amp; board[it.x][it.y] == mark
}.each {
eat(mark, it.x, it.y)
}
}
(0..XMAX).each { x ->
(0..YMAX).each { y ->
def mark = board[x][y]
if (mark != "×") {
score[mark]++
eat(mark, x, y)
}
}
}
println score
誤った投稿をして、サイトを汚しまくってしまった・・・
ディスカッション
コメント一覧
まだ、コメントがありません