Вот возможный путь вперед. Я понимаю, что это постоянный конкурс .
Рассмотрим период «ожидания» каждого 1. Мы имеем дело с единицами, у которых другие 1 находятся непосредственно слева от них, и им приходится «ждать», прежде чем они смогут начать движение; а также с единицами, у которых недостаточно нулей, чтобы предотвратить дополнительные «ожидания», когда они достигают других групп единиц.
Пример:
"waiting" periods
0 1 2 3 0+3-2+1
^ ^ ^ ^ ^ 1+3-2+1
^ ^ ^ ^ ^ ^
0 0 0 0 1 1 1 1 0 0 1 1
0 0 0 1 0 1 1 1 0 1 0 1
0 0 1 0 1 0 1 1 1 0 1 0
0 1 0 1 0 1 0 1 1 1 0 0
1 0 1 0 1 0 1 0 1 1 0 0
1 1 0 1 0 1 0 1 0 1 0 0
^ ^
^ 5 moves - 3 wait
^
5 moves - 2 wait
Используя наши «периоды ожидания», мы можем вычислить, где каждый 1 окажется в конце, хотя есть и другие аспекты этого, когда мы рассматриваем множественные прерывания и как выяснить, в каком из них может закончиться любой 1.