Значит так... как я думаю... 1) Поскольку нет ни одной клетки, из которой не произошло ни одного движения, то значит нужно искать клетки, в которых, во время исполнения алгоритма позиция изменяется, но в конце концов опять становится на место.
2) нетрудно догадаться, что там где на каком-то шаге движение упирается в стену, возвращение в прежнее положение невозможно (потому что положение текущей клетки меняется по кругу). Значит, вычеркиваем все клеточки, из которых на каком-то шаге невозможно совершить выход, то есть те, у которых есть барьер или сверху, или снизу, или справа, или слева.
3) после вычеркивания остается не так много клеток, в которых легко проверить выполнение условия по самому алгоритму.
У меня получился такой рисунок, где серые клетки - в которых я как раз проверяла пункт 3, а красная - эта та единственная клетка, в которой алгоритм исполняется: