ud1
Более того перемещения тоже можно улучшить, чтоб в несколько итераций их производить.
Например два юнита идут друг за другом, слева на право.
Насколько понимаю, если сначала будет считаться левый, то он не сможет сдвинуться, так как справа место занято. Потом посчитается правый, и освободит это место, логично чтоб была еще одна итерация, при которой левый уже сможет переместиться на это место.
Т.е. фактически надо делать в цикле пока может хоть кто-то перемещаться.
Как я понял, случайный порядок это фича чтобы затруднить симуляцию