Все циклы в коде - одной и той же длины, отличаются только шагом.
Цикл выполняется один раз максимум.
Очевидно, логично определять в ветвлении шаг и выполнить цикл только один раз, если этот шаг не нулевой.
Шаг - пара координат [0, 1], [1, 0], [-1, 0] и т.п., нулевой шаг - [0, 0] можно задать до ветвления.