Слушай, а у тебя правильно ли расположены направления?
Если я правильно понял то:
N север
E восток
S юг
W запад
А то просто направления севера и юга должны быть одинаковыми только отличаться знаком одна координата.
И мне кажется будет правильней например так:
N[-1,0]
E[0,1]
S[1,0]
W[0,-1]
Индекса 4 там нет, думаю, что имелся ввиду индекс 3, который и создаёт проблему)
Я пришёл к такому же решению, но вот этот приём с дополнительной проверкой случаев поворота от максимального к нулю и наоборот показался мне костыльным.
Есть предположение, что его можно обойти побитовым сдвигом к разнице индексов, но моих познаний не хватает