🤔

文字列の二次元配列 迷路 考え方

2023/10/05に公開

問題

縦 H マス、横 W マスの H × W マスからなる迷路 S があります。
上から i 行目、左から j 列目のマス は S_ij とあらわされ、
S_ij が「#」のとき壁であり、「.」のとき道です。
整数 r、c が与えられるので、S_rc が壁かどうか判定してください。
S_rc が壁なら「Yes」を、壁ではないなら「No」と出力してください。

自分の考え方

#迷路Sを構成するH,Wを受け取る
# 進む先のマスの数を受け取る
h, w, r, c = gets.split.map(&:to_i)

maze = []
# 文字列として受け取ったマスの要素を分割して配列に収め、さらに3行分の迷路の配列にする
h.times{maze.push(gets.chomp.split(""))}
# p maze => 
#[[".", ".", "#", "."], ["#", ".", "#", "#"], [".", ".", ".", "."]]
#イメージはこう
#  [[".", ".", "#", "."], 
#   ["#", ".", "#", "#"], 
#  [".", ".", ".", "."]]

# 指定された要素の確認 r-1なのは配列のインデックスは0から始まるので一つずれて指定されるため
# puts maze[r-1][c-1] => "."

# 進んだ先が"."であれば道(No)
 if maze[r-1][c-1] == "." 
     puts "No"
# "#"であれば壁(Yes)
 else
     puts "Yes"
 end

ruby解答例なし

Discussion