行*列グリッドがあり、グリッド上の各ノードに整数(状態)値があるとします。
state[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS]
の値が
state[row][0] == state[row][NUMBER_OF_COLUMNS -1]
この2点から同じ状態だけで構成された「パス」があるかどうかを確認したい。
パスとは、左、右、下、または上の状態が元の状態と同じであることを意味します。
重要かどうかはわかりませんが、状態がバイナリ(#または-)であるとしましょう。したがって、state == "-"のパスをチェックしている場合、状態がNになったら、パスを続行できます。 E、S、Wも== "-"
終了行は開始行と同じである必要があります。
成功例:
|# # # # #|
|# # # # #|
|# # # # #|
|- # # # #|
|- - - - -|
また
|# # # # #|
|# # # - #|
|# - - - #|
|- - # - -|
|# # # - -|
また
|# # # # #|
|# # # - #|
|# # # - #|
|- - - - #|
|- # # - -|
失敗の例:
|# # # # #|
|# # # # #|
|# # # # #|
|- - - - #|
|# # - - -|
また
|# # # # #|
|# # # - #|
|# # # - #|
|# - - - #|
|- # # - #|
また
|# # # # #|
|# # - # #|
|# # # # #|
|# - # - #|
|- # - # -|
失敗します。
どうすればよいですか?私はObjectiveCでコーディングしていますが、手順を理解するのに役立つ擬似コードで十分です。
パスのBOOL存在をチェックすることに加えて、パス内のすべてのグリッド座標の配列を返したいと思います。
これは実装が簡単ですか、それとも私は頭を悩ませていますか?