80 / 80 / 19
Регистрация: 07.05.2009
Сообщений: 316
1

1589. Сокобан

13.05.2009, 19:45. Показов 1581. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ограничение:
времени: 5.0 секунды
памяти: 64 МБ
Описание:
Программист Стас на время отпуска устроился поработать в японскую компьютерную фирму Thinking Rabbit. Сначала идея казалась замечательной — и на халяву съездить за границу, и заработать, и набраться опыта у японских коллег. Но оказалось, что программисты без знания японского фирме не нужны, и Стаса отправили работать кем-то вроде кладовщика (по-японски его профессию называли Soko-ban).
Стас должен наводить порядок на складе, точнее, расставлять контейнеры с грузом по местам. Каждое утро Стасу дают бумажку со схемой очередного помещения и указанием, куда надо поставить контейнеры (почему-то начальству фирмы Thinking Rabbit не важно, какой именно контейнер куда поставить, главное, чтобы все контейнеры стояли только на отмеченных местах).
Однако, расставить их не так просто. Контейнеры большие и тяжелые, так что передвигать их можно, только толкая по полу, причем сил хватает лишь на один контейнер за раз. Кстати, контейнеры еще и гладкие, поэтому их можно толкать перед собой, но невозможно, например, тянуть за собой или поворачивать. Габариты помещения точно подогнаны под размеры контейнеров, поэтому Стас не может перебраться через контейнер, протиснуться между стоящими рядом контейнерами или пролезть между контейнером и стеной — он может ходить только по свободному пространству. Поэтому наведение порядка превращается в жуткую головоломку. А если решить её не удается или контейнер случайно попадает в какой-нибудь угол, из которого его не вытащить, то Стасу не позавидуешь. Дело в том, что стены склада сплошные, без выходов. Утром Стас попадает на склад через один из люков в потолке, а выйти из помещения он может только тогда, когда выполнит свою задачу. Умная система управления откроет люк для Стаса в нужном месте.
Помогите Стасу составить план перемещения контейнеров.
Исходные данные:
На входе задана схема склада — прямоугольная сетка размером n × m (3 ≤ n, m ≤ 8). Пустое место обозначется пробелом, а объекты обозначаются следующими символами:

* # — стены
* . — пустое место, куда нужно поставить контейнер (цель)
* @ — место, откуда начинает работу Стас
* + — место, откуда начинает работу Стас, если там находится одна из целей
* $ — контейнер на пустом месте
* * — контейнер на одной из целей

Гарантируется, что схема склада задана корректно, т.е. Стас не может выйти за его пределы. Количество контейнеров совпадает с количеством целей.
Результат:Выведите строку, описывающую план перемещений Стаса, при котором он расставляет контейнеры по конечным позициям. Все перемещения записываются буквами r, l, u и d (соответствующие четырем направлениям перемещений). Если при перемещении двигается контейнер, то буквы записываются в верхнем регистре (R, L, U и D соответственно). Длина строки не должна превышать 10000 символов. Можете считать, что решение всегда существует.
Примеры 1
Код
[B]исходные данные:[/B]
[color="#000088"]########
#@  $ .#
########[/COLOR]
[B]результат:[/B]
[COLOR="Green"]rrRR[/COLOR]
Примеры 2
Код
[B]исходные данные:[/B]
[COLOR="#000088"] ######
##   .#
#@  ###
#   * #
#   $ #
#     #
#######[/COLOR]
[B]результат:[/B]
[COLOR="Green"]dddrrrruLdlUUUluRR[/COLOR]
Автор задачи: Станислав Васильев и Сергей Пупырев
Источник задачи: ACM ICPC 2007–2008. NEERC. Восточный подрегион. Екатеринбург, 27 октября 2007 г.


ЗЫ: Очень интересная задачка. Кто-нибудь в курсе как её решать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2009, 19:45
Ответы с готовыми решениями:

Сокобан на С++
Ребят, пишу курсовую на С++, игру Сокобан юзая Win 32 Api, может у когото есть желание помочь, или...

Сокобан, и построение дерева решений
Добрый вечер, уважаемые форумчане. Нужна помощь с лабой, которую я реально не могу...

Задача "Сокобан"
Ограничение времени: 5.0 секунды Ограничение памяти: 64 МБ Программист Стас на время отпуска...

ИИ (Бот) для игры Сокобан
Подскажите как можно зделать бота для поиска пути( наименьшего пути) для прохождения уровня к...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2009, 19:45
Помогаю со студенческими работами здесь

Бот (ИИ) для игры Сокобан
Подскажите как можно зделать бота для поиска пути( наименьшего пути) для прохождения уровня к...

Курсовик-игра сокобан(грузчик)
Здравствуйте форумчане,мне был дан курсовик -написать игру *грузчик* смысл каторой заключается в...

Сокобан/грузчик/ящики на PASCALABC.net
Здравствуйте, помогите пожалуйста написать самую простую программу сокобан/ящики/грузчик везде...

Рандомные уровни для игры Сокобан
Я пишу сейчас игру Сокобан, и мне нужно, чтобы уровни генерировались случайно, но по заданным...

Нужна консультация с реализацией авторешения игры "Сокобан"
Нужна консультация с реализацией авторешения игры "Сокобан", и пожалуйсто если не сложно...

Как реализуется генерация лабиринтов в игре "Сокобан"
Как реализуется генерация лабиринтов кто-нибудь мб подскажет? Вот пример уровня: xxxxxxxxxx x ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru