Формулите за изчисляване на "центъра" са супер елементарни и са само едни - без значение дали N е четно или не...
В моята реализация има един фор и два ифа - единият иф е с елз, другият е чист и прост - двата ифа са във фора, като имам и един суич с 4 кейса за посоките...
Ако става въпрос за обясняване - ето как се сещам, че бих ти го обяснил:
Седиш с вързани очи в центъра на квадратно помещение - това са ти го разправяли преди да те вкарат.
Казали са ти, че пътят към изхода е "спираловиден", но с коридори, разположени под прав ъгъл един спрямо друг...
Дават ти шанс да се спасиш, ако излезеш без да докоснеш стена /защото стените са безкрайно тънки/ и са ти казали само, че ширината на коридор е точно една твоя крачка и излизането е по часовата стрелка - т.е. имаш само десни завои...
Ти си седнал в правилната посока за тръгване. /този, който те е оставил, те е разположил с лице в правилна посока/
Преди да станеш, разсъждаваш наум и си правиш план - ставам, правя една крачка напред, завивам, пак една напред, пак завивам, после една или две напред (дали вече не съм на изхода), завивам и т.н...
Планът ти изплува в съзнанието кристално ясен. Ставаш, тръгваш и следвайки точно плана - излизаш...
Разчиташ само, че като стъпиш точно на изхода, веднага ще свалят превръзката от очите ти /това са ти го обещали/ и затова броя обиколки не те интересува. Правиш само един трик - през два завоя, като си направиш нужните крачки се спираш и ако няма признаци, че си на изхода (никой не ти сваля превръзката) - то тогава правиш още една крачка и тогава завиваш...
Ако мислиш, че това е лесно за досещане - гледайки спиралния коридор - скициран отгоре - това на фантазия, докато си седиш с вързани очи...
то моят алгоритъм следва точно този маршрут... Имаш само смятане на брой крачки, завой след завой те стават повече и повече, но следват точен закон за нарастване... И трикът - ако не си точно на изхода - значи имаш още една крачка напред и тогава още два завоя с нужните крачки...
Ясно е, че с всяка крачка стъпваш точно в/у един елемент на масива. Всяка твоя стъпка е една моя итерация на фор-а...
И последно - всяко по-малко N е "вписано" в следващото (има и рекурсивен вариант за решаване)...
Т.е. ако си смяташ колко е дотук N по време на движението и още не си излязъл - имаш цели 2 коридора за изминаване. Пак спираш, ослушваш се, още една крачка напред и още два коридора дълги колкото последния и пак спиране, изчакване и т.н. ...
Бая рисунки ми минаха през скициране и се сетих за цялата тази приказка...
Та така...