Не думаю, что это так, но на всякий случай знайте - я готов подтвердить, что вы - первый, кто сообщил мне об этом.
Если чо - проставитесь с Филдсовской премии )))
кратчайшая по длине последовательность состоит из нуля команд, если цель лежит по ходу начального движения, или одной, если надо развернуться.
Вердикт: задача пересказана неряхой.
Можно как-то, но зачем? Просто оборачиваете свой код в обработчик исключения, если система однажды не выделит память - у вас будет ошибка вроде "nil pointer assignmtnt".
Когда и как производится запись в базу? - как только, так сразу, если вы не хотите рисковать потерей введенных данных. Как - ну это вам решать )
Ножом для масла можно порезать правую руку.
В этом деле важно избегать цикличности.