Так как перестановка бильярдных шаров для игры в 8 шаров может выполняться по нескольким правилам, вот подстановка, которую я имею в виду:
т. е. шар-8 должен быть в центре, а по бокам полоски и сплошные должны чередоваться. Два оставшихся шара (полосатый и сплошной) не имеют значения.
Предположим, вы только что закончили игру, соберите шары, положите их в стойку и приступайте к расстановке, чтобы начать новую. Теперь они в случайном порядке. Как вы поступите?
Отказ от ответственности: рисование следует
Простым подходом было бы начать по порядку: сверху -> снизу и слева -> справа.
Так, например, мы предполагаем, что 1
находится в правильной позиции. 5
нет, меняем местами его на 2
, затем меняем местами 4
на 3
(или на 8
), но это уже будет неэффективно, потому что мы либо переместили 4
в центр, либо 8
на место 4
- т.е. не туда, где он должен быть в конце.
Также нужно решить, какие типы мячей мы хотим использовать в углах. Как вы решаете это заранее? Нужно ли учитывать, сколько мячей уже на месте? В моем примере, если вы хотите серые по углам, у вас уже есть 3 места (шарики 1,10,14). Если вам нужны белые по углам, у вас их всего 2 на месте (2,11). Должно ли это иметь значение?
Чтобы формализовать это, мы можем предположить, что мы можем выполнить две три операции:
- поменять местами два соседних шара
- поменять местами два не соседних шара
- повернуть стойку
Поскольку мы можем использовать обе руки, давайте предположим, что мы можем распараллелить первую операцию (одновременно поменять местами 2 пары шаров), в то время как мы можем поменять местами только два несмежных шара за раз.
Какой подход лучше всего подходит для этой задачи, который минимизирует время (в описанных единицах времени)? Подойдет ли жадный для этого? (думаю, так я это делаю, когда собираю их)
РЕДАКТИРОВАТЬ: Согласно существующим (или предыдущим ответам) - вы можете предположить, что наличие большего количества полос, чем сплошных в углах, означает, что шаги предпочтут углы - не говоря, что это неверно, но если вы сделаете это предположение, пожалуйста, докажите это.