地図読み込み時に番兵をつける
地図データの読み込み時点で壁をつける
上下左右はfor d in [-1, +1, -WIDTH, +WIDTH]:になる
一度に動きうる距離で壁の幅SENTINELを決める
スタート地点などはSENTINELだけずれる
元々1オリジンの時があるので注意
https://github.com/nishio/atcoder/blob/master/libs/readMap.py
PAST5での追記
PAST5E 今まで1個読み込むだけだったが、この問題では「番兵の幅が異なる2つ」を読む必要があった
さらに片方だけ回転されるのでバグの元になった
クラスにした、回転もメソッドにしといた
PAST5H
グリッドグラフを構築しないことが必要だった
PAST5G 「隣接関係でグラフにするところはライブラリ化してもいいかもな」と書いていたがそもそもグラフにすることを避けるべき
地図を1次元配列に入れる
以前numpyで読むものを作った
番兵付きの一次元配列
が、よく考えるとこういうデータを扱う時、だいたい地図に対して添え字でランダムアクセスする
のでnumpyで待つよりリストで持つ方が良い
see numpyの添え字アクセスは遅い