Увайсці
⎕ ⍆
X

Запіс #394458

Integrator 44 Solver Rank
! #394458   2020-02-09 13:35
В данной статье рассматривается решение задачи №118801 ( https://en.grandgames.net/sokoban/id118801) игры Сокобан, найденное пользователем @ovawiss.
Рассмотрим начальное положение ящиков:
-

Очевидно, в первую очередь надо идти вправо, сдвигая ящик «1», потому что в противном случае ящик «3» «прилипнет» к стенке. Этот ящик можно сдвинуть на одну или две клетки, принципиальной разницы нет, потом можно будет его подвинуть при необходимости. Теперь посмотрим какие из ящиков группы «2» можно двигать и куда:
1) Средний ящик вниз: будет заблокирована группа «4», её можно разблокировать сдвигом влево левого или правого ящиков группы «2», но будет заблокирован ящик «3» (с соседом снизу). Этот вариант тупиковый.
2) Левый ящик вниз и вправо до упора (если не до упора, то группа «4» будет заблокирована). Получим следующую позицию:
-

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

Теперь перемещаем ящик «1» на место «2», сдвиг любого другого ящика не имеет смысла. После этого опять остаётся только один ход: перемещение ящика «3» на место ящика «1». Получаем следующую позицию:
-

Дальше я сдвигал ящик «1» влево, но решение при этом получилось более сложное (если вообще получилось, точно не помню), потому двигать его не будем, а перетащим ящики «2» и «3» на места «4» и «5» соответственно (другие ходы еще больше запутывают):
-

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

Теперь самые очевидные ходы такие: сдвиг ящика «1» вниз до упора, ящика «2» вниз на одну клетку и ящика «3» вправо на одну клетку. Затем сдвигаем ящик «4» на одну клетку вправо, чтобы потом не появилась заблокированная область. Получится следующая позиция:
-

Следующие ходы тоже вполне очевидны: сдвигаем ящик «1» на место «5», чтобы можно было переместить ящик «2» на место «6». А на место ящика «2» ставим ящик «3», место которого в свою очередь занимаем ящиком «4». После чего получаем следующую позицию:
-

Чтобы можно было притащить ящик «6» к остальным, нужно передвинуть ящик «1» на место «5». Для этого сдвинем ящик «3» сразу на три клетки влево (освобождая путь), сдвинем ящик «2» на одну клетку влево и переместим ящик «1». Затем вернём на место ящик «2», ящик «4» подвинём вправо (к выступу), а на его место поставим ящик «3» Получим следующую позицию:
-

Теперь ставим ящик «1» на место «3», затем ящик «2» тащим на место «4», а ящик «1» перемещаем на место ящика «2». Теперь осталось растолкать ящики по местам:
-

Теперь надо освободить ящик «1», для этого сдвинем ящики «2» и «3» влево на один и три клетки (место «5») соответственно. Затем отодвинув ящик «4» влево на одну клетку, поставим ящик «1» на место ящика «3»: (28.png)
-

Теперь осталось сдвинуть ящики на одну клетку в направлении стрелки, цифры обозначают относительный порядок установки: блоки «2» ставятся после блока «1», а блок «9» лучше устанавливать последним.

Падабаецца + 13     6
_gst6907763 46  2020-02-09 14:18 + 2
ого, какая крутота! aplod тут уже со скринами и с анализом почему нельзя куда-то ходитьvertuha
полезная статьяvverh может научусь, наконец, его решать
спасибо @Integrator и @ovawiss за анализ и решениеrose. буду изучать
ovawiss 44  2020-02-09 14:18 + 5
Integrator, огромное спасибо! Разбор превосходный. @Support, а можно как то этот пост переместить в паблик головоломок, чтобы он не затерялся в текучке?
NATAKAPA 55 Solver Rank  2020-02-09 14:41 + 2
РЕБЯТА!!! porukamrespektrespektrespektrespektrespekt
Lena2020 48  2020-02-09 14:47 + 3
Я тоже подробно разберусь попозже, спасибо, пока в закладки размещуporukamvverhcvety
mikl 52 Solver Rank  2020-02-09 14:59 + 4
Спасибо огромное за такой серьезный и подробный анализ решения!!!
Такую работу и изучать надо серьезно, специально для этого время выделю.
Сразу видно мастеров своего дела! Преклоняюсь respektrespektrespekt
А главное, что им не жалко поделиться своим умением! Еще раз, спасибо!!!
Ioanna 43  2020-02-09 16:05 + 2
Спасибо respektrespekt
В закладки положу чтоб не потярелось readdrinks
Калі Вы знайшлі недакладны, альбо памылковы пераклад элементаў інтэрфейсу сайта, калі ласка паведаміце: @GrandGames
:)
Вярнуць згорнутае акно