すべての壁の間にリンクを作成しようとしている 2D グリッドがあります。
グリッドは次のように構成されます。
grid = new State[8][8];
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
grid[i][j] = State.blank;
}
}
ヘビのゲームのように壁を通り抜けて反対側に行けるロボットがあります。
たとえば、ロボットが北を向いていて x[0]y[1] の位置にある場合、x[7]y[1] に接続する必要があります。
ロボットは、前方の 3 つのブロック (左に 1 つ、右に 1 つ、真正面に 1 つ) の内容を読み取ることもできる必要があります。
# x = empty space
# R = robot
# S = spaces robots sensors pick up
北を向いていた場合、これはロボットが拾うものです:
[S][S][S][x][x][x][x][x]
[x][R][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
同様に、ロボットが東を向いていた場合、これは拾うものです。
[x][x][S][x][x][x][x][x]
[x][R][S][x][x][x][x][x]
[x][x][S][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
私が抱えている問題は、ロボットが壁を通過するだけでなく、壁を通してセンサーを読み取ることができるようにするための適切なアルゴリズムを見つけることです。
ロボットが左上隅にあり、北を向いている場合、次のように壁を通して読み上げます。
[R][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[x][x][x][x][x][x][x][x]
[S][S][x][x][x][x][x][S]
ご想像のとおり、私はすでに IF ステートメントの長さのチャンクを実行しようとしましたが、非常識にならずにすべてをカバーするには可能性が多すぎます。
また、特定の状況に置かれたときの X と Y の変更を紙に書き留めましたが、アルゴリズムを示唆するパターンは実際には見当たりません。
どんな助けでも大歓迎です!