В игре Космические Рейнджеры есть такой квест, похожий на игру пятнашка
Там также поле четыре на четыре клетки, внутри двигаются 15 костяшек. Однако костяшки пронумерованы от 1 до 8. Некоторые костяшки встречаются дважды. Самое трудное в головоломке то, что есть ограничение на количество перемещений.
Если обычную головоломку пятнашка собирать вручную, слой за слоем, то на сборку уйдет примерно 200 перемещений. А в головоломке про Рейнджеров есть ограничение на количество перемещений. Простым алгоритмом головоломку не решить.
Вот тут можно скачать игру из Рейнджеров и самостоятельно с ней поиграться, попытаться собрать вручную
http://www.mediafire.com/download/3bmm0 ... b/game.zip Игру Codebox.qm нужно открыть с помощью плеера.
-- Вт ноя 26, 2013 18:07:45 --Вот я вздумал решить головоломку из Рейнжеров с помощью программы, находящей оптимальное решение головоломки пятнашка PuzzleSolver.jar from
http://www.brian-borowski.com/Software/Puzzle/Я перенумеровал 15 цифрами костяшки из головоломки про Ренджеров, загнал в решатель PuzzleSolver.jar А он мне заявляет, что это недопустимаю конфигурация головоломки пятнашка. Пришлось жульничать. Цифра 2 встречается два раза. Раньше при перенумерации я сначала костяшку 2 заменял цифрой 8, а потом второй раз костяшку 2 заменял цифрой 9. Теперь я решил пересставить местами костяшки 8 и 9 и загнать в решатель PuzzleSolver.jar. Такая конфигурация была принята решателем. Он выдал решение за сотые доли секунды. Мне осталось перевести, проинтерпретировать это решение, чтобы получить инструкцию для человека, как переставлять костяшки в скрипте про Рейнджеров:
1. фрагмент 5 выше пустой клетки
2. фрагмент 7 левее пустой клетки
3. фрагмент 1 левее пустой клетки
4. фрагмент 8 выше пустой клетки
5. фрагмент 5 левее пустой клетки
6. фрагмент 7 выше пустой клетки
7. фрагмент 6 правее пустой клетки
8. фрагмент 5 ниже пустой клетки
9. фрагмент 2 правее пустой клетки
10. фрагмент 4 правее пустой клетки
11. фрагмент 2 выше пустой клетки
12. фрагмент 3 левее пустой клетки
13. фрагмент 4 ниже пустой клетки
14. фрагмент 2 правее пустой клетки
15. фрагмент 7 ниже пустой клетки
16. фрагмент 1 левее пустой клетки
17. фрагмент 2 выше пустой клетки
18. фрагмент 2 левее пустой клетки
19. фрагмент 8 ниже пустой клетки
20. фрагмент 2 правее пустой клетки
21. фрагмент 1 правее пустой клетки
22. фрагмент 7 выше пустой клетки
23. фрагмент 2 левее пустой клетки
24. фрагмент 1 ниже пустой клетки
25. фрагмент 1 ниже пустой клетки
26. фрагмент 8 левее пустой клетки
27. фрагмент 4 левее пустой клетки
28. фрагмент 3 выше пустой клетки
29. фрагмент 2 правее пустой клетки
30. фрагмент 1 правее пустой клетки
31. фрагмент 8 ниже пустой клетки
32. фрагмент 5 правее пустой клетки
Изначально компьютер давал ограничение в 59 перемещений. А тут удалось решить головоломку за 32 перемещения. Я игрался, решал Рейнджеров с другими комбинациями костяшек. Самое длинное решение было из 42 перемещений. Причем программа PuzzleSolver.jar находила решение за сотые доли секунды.
А вот дальше интереснее. Некий GlukKazan написал программу для решения головоломки из Рейнджеров
http://habrahabr.ru/post/180043/ Он использовал поиск с возвратом, отсечение по манхеттенскому расстоянию. Программа работает долго. Для поиска решений головоломки из Рейджеров, состоящее из 20 перемещений костяшек, тратится две с половиной секунды. А если решение состоит из 42 перемещений, то на его поиск требуется более 10 минут. PuzzleSolver.jar для игры пятнашка при подобных глубинах поиска тратит сотые доли секунды.
Но вот что интересно. Я свел головоломку из Рейнжеров к игре пятнашка и думал, что это решение оптимально. Конкретную позицию, размещенную на картинке, пятнашка решает за 32 хода. Однако программа GlukKazan решает именно головоломку из Рейнджеров. Так программа нашла решение головоломки не за 32, а за 20 ходов!