実現したいこと
二次元配列の隣り合う要素を比較し、隣り合う要素が存在しないものは処理をスキップしたいです。
例えば、以下のような.
と#
の組み合わせからなる表で#
が格納された場所に対して、上下左右の要素が#
だった時に、隣り合っている分だけcount ++
したいとします。例えば、1行目の1列目は左と上に要素がないので、処理をスキップしたいです。
.....#. .#.###. .####.. ###.##. .####..
考えたコード
以下のようにすれば、実装できるのですが、もっと短く書きたいです。一度だけであれば大した長さじゃないのですが、paizaのスキルチェック問題を解いていると、このような処理をしなければいけないことが多かったので質問しました。
py
1# metrix = "上のような表" 2# 以下 metrix[i][j] に対して隣り合う要素が"#"の時だけカウント 3# hは行数、wは列数 4 5count = 0 6if metrix[i][j] == "#": 7 if i != 0: 8 if metrix[i-1][j] == "#": 9 count += 1 10 if j != w - 1: 11 if metrix[i][j + 1] == "#": 12 count += 1 13 if i != h - 1: 14 if metrix[i + 1][j] == "#": 15 count += 1 16 if j != 0: 17 if metrix[i][j-1] == "#": 18 count += 1 19 20print(count)
試したこと
try except IndexError
を使って、index
が存在しないときはカウントせずに処理を実行。
pythonではindex = -1
が配列の最後の要素を示すので、期待した結果が得られませんでした。
回答2件
あなたの回答
tips
プレビュー