|
201 / 172 / 52
Регистрация: 01.06.2010
Сообщений: 371
|
||||||
Задача "Сокобан"26.07.2013, 15:59. Показов 3743. Ответов 9
Метки нет (Все метки)
Ограничение времени: 5.0 секунды Программист Стас на время отпуска устроился поработать в японскую компьютерную фирму Thinking Rabbit. Сначала идея казалась замечательной — и на халяву съездить за границу, и заработать, и набраться опыта у японских коллег. Но оказалось, что программисты без знания японского фирме не нужны, и Стаса отправили работать кем-то вроде кладовщика (по-японски его профессию называли Soko-ban).Ограничение памяти: 64 МБ Стас должен наводить порядок на складе, точнее, расставлять контейнеры с грузом по местам. Каждое утро Стасу дают бумажку со схемой очередного помещения и указанием, куда надо поставить контейнеры (почему-то начальству фирмы Thinking Rabbit не важно, какой именно контейнер куда поставить, главное, чтобы все контейнеры стояли только на отмеченных местах). Однако, расставить их не так просто. Контейнеры большие и тяжелые, так что передвигать их можно, только толкая по полу, причем сил хватает лишь на один контейнер за раз. Кстати, контейнеры еще и гладкие, поэтому их можно толкать перед собой, но невозможно, например, тянуть за собой или поворачивать. Габариты помещения точно подогнаны под размеры контейнеров, поэтому Стас не может перебраться через контейнер, протиснуться между стоящими рядом контейнерами или пролезть между контейнером и стеной — он может ходить только по свободному пространству. Поэтому наведение порядка превращается в жуткую головоломку. А если решить её не удается или контейнер случайно попадает в какой-нибудь угол, из которого его не вытащить, то Стасу не позавидуешь. Дело в том, что стены склада сплошные, без выходов. Утром Стас попадает на склад через один из люков в потолке, а выйти из помещения он может только тогда, когда выполнит свою задачу. Умная система управления откроет люк для Стаса в нужном месте. Помогите Стасу составить план перемещения контейнеров. Исходные данные На входе задана схема склада — прямоугольная сетка размером n × m (3 ≤ n, m ≤ 8). Пустое место обозначется пробелом, а объекты обозначаются следующими символами: # — стены . — пустое место, куда нужно поставить контейнер (цель) @ — место, откуда начинает работу Стас + — место, откуда начинает работу Стас, если там находится одна из целей $ — контейнер на пустом месте * — контейнер на одной из целей Гарантируется, что схема склада задана корректно, т.е. Стас не может выйти за его пределы. Количество контейнеров совпадает с количеством целей. Результат Выведите строку, описывающую план перемещений Стаса, при котором он расставляет контейнеры по конечным позициям. Все перемещения записываются буквами r, l, u и d (соответствующие четырем направлениям перемещений). Если при перемещении двигается контейнер, то буквы записываются в верхнем регистре (R, L, U и D соответственно). Длина строки не должна превышать 10000 символов. Можете считать, что решение всегда существует. Примеры
0
|
||||||
| 26.07.2013, 15:59 | |
|
Ответы с готовыми решениями:
9
Сокобан на С++ Сокобан, и построение дерева решений
|
|
842 / 480 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
|
|
| 26.07.2013, 16:09 | |
|
Есть такой алгоритм A*, почитай, может поможет как-нибудь.
Добавлено через 2 минуты Хотя его еще придётся модернизировать как-нибудь...
0
|
|
|
201 / 172 / 52
Регистрация: 01.06.2010
Сообщений: 371
|
||
| 26.07.2013, 16:12 [ТС] | ||
|
интересно вообще кто-то из форума пытался ее решить? З.Ы. задача висит в топе сложнейших на acm.timus.ru
0
|
||
|
|
|||
| 26.07.2013, 17:39 | |||
|
https://www.cyberforum.ru/grap... ost4865241 ![]() Добавлено через 2 минуты Правда у меня было решение методом перебора (но такие маленькие уровни решались быстро). При этом глубину перебора нужно было задавать параметром. Т.е. если задача решаема за 10 ходов, а задано ограничение в 20 ходов, то программа найдёт решение, которое не более 20 ходов, и решение будет НЕ кратчайшим
0
|
|||
| 26.07.2013, 17:52 | |
|
Evg, если бы можно сделать перебором, то эта задача не висела бы в топе сложнейших. Для поля 8*8 можно соорудить решение больше чем за 10 ходов, которые уже не отпереборит твоя программа. И тут, увы, TLE
0
|
|
|
|
|
| 26.07.2013, 18:00 | |
|
Я и не говорю, что у меня идеальная программа и решает всё. Мне нужно было разрулить уровень 8 на 8, который мозгами я пройти не смог. Написал программу, она нашла решение, после чего я успокоился
0
|
|
|
201 / 172 / 52
Регистрация: 01.06.2010
Сообщений: 371
|
|||
| 26.07.2013, 18:50 [ТС] | |||
0
|
|||
|
|
||
| 26.07.2013, 20:08 | ||
|
1
|
||
|
|
|
| 26.07.2013, 23:46 | |
|
Блин... я что-то подумал, что "АСМ" - это ассемблер...
0
|
|
| 26.07.2013, 23:46 | |
|
Помогаю со студенческими работами здесь
10
1589. Сокобан Логика Сокобан, на массиве ИИ (Бот) для игры Сокобан Бот (ИИ) для игры Сокобан Сокобан переделанный под нейронку Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|