競技プログラミングをしていて、特定のマスから距離1の周囲8マスを検索するという場面は多いのではないでしょうか。
この記事では、そんな周囲8マスを調べる方法について解説していきます。
目次
周囲8マスの確認方法
方法は、2通りあります。
1つ目は、先に周囲8マスの座標を生成する方法です。
2つ目は、for文で一つずつ見ていく方法です。
それぞれ解説していきます。
周囲8マスを先に用意しておく方法
>>> X, Y = 3, 5
>>> xys = [[X+dx, Y+dy] for dx in [-1, 0, 1] for dy in [-1, 0, 1] if not dx == dy == 0]
>>> xys
[[2, 4], [2, 5], [2, 6], [3, 4], [3, 6], [4, 4], [4, 5], [4, 6]]
>>> for x, y in xys:
... (任意の処理)
周囲8マスをfor文で探索する方法
>>> X, Y = 3, 5
>>> for dx in [-1, 0, 1]:
... for dy in [-1, 0, 1]:
... if not dx == dy == 0:
... x, y = X+dx, Y+dy
... (任意の処理)
範囲が決まっている場合の追加条件について
横幅がW、縦幅がHと定義されているとします。
if 0 <= x <= W and 0 <= H
両橋が隣接している場合の追加処理
同様に、横幅がW、縦幅がHと定義されているとします。
x, y = x%W, y%H
まとめ 周囲8マスを検索する方法
周囲8マスを検索する方法について解説しました。
わからない事があれば、気楽に質問を投げてください。
他の処理についても解説を上げていく予定なので、良ければ読んでみてください。
コメント