🚀
グリットから有向グラフを作成する
H行W列のマス目があります。#
には障害物が置かれており、.
には何も置いてありません。有向グラフを作ってください。
入力形式
H W
S1
S2
.
.
.
SN
入力例
2 4
.#..
....
実装
function main()
h, w = readline() |> split |> x -> parse.(Int, x)
s = [split(readline(), "") for _ ∈ 1:h]
g = [[] for _ ∈ 1:h*w]
for y ∈ 1:h, x ∈ 1:w
if s[y][x] == "."
for (a, b) ∈ [[1, 0], [-1, 0], [0, -1], [0, 1]]
adjacent_x = x+a
adjacent_y = y+b
if 1 ≤ adjacent_x ≤ w && 1 ≤ adjacent_y ≤ h && s[adjacent_y][adjacent_x] == "."
push!(g[(y-1)*w + x], (adjacent_y-1)*w + adjacent_x)
end
end
end
end
@show g
end
main()
出力
yuu@penguin:~/src/eikou/0429$ julia grid.jl
2 4
.#..
....
g = Vector{Any}[[5], [], [4, 7], [3, 8], [6, 1], [7, 5], [8, 6, 3], [7, 4]]
Discussion