|
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
|
|
головоломка "Фонари"27.12.2010, 16:30. Показов 5222. Ответов 49
Метки нет (Все метки)
есть головоломка Фонари, вот условие для решения.
не могу придумать, даже алгоритм для решения, подскажите, пожалуйста... в принципе можно, исключить ситуацию с пустыми черными клетками и с черными клетками, в которых стоит 0, чтобы проще было...
0
|
|
| 27.12.2010, 16:30 | |
|
Ответы с готовыми решениями:
49
Головоломка на прологе Головоломка на SWI задача-головоломка |
|
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
|
|
| 28.12.2010, 21:10 [ТС] | |
|
0
|
|
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
|
| 28.12.2010, 21:16 | |
|
Да, именно так.
0
|
|
|
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
|
|||||||
| 28.12.2010, 21:47 [ТС] | |||||||
|
в предикате black_net сначала находим черную клетку, чтобы координата ее строки совпадала с координатами строк фонарей, если это выполняется, то смотрим находится ли она между фонарей... но я тут перебираю список клеток, а как потом после перебора списка клеток, перейти к следующему элементу списка Fonari и снова искать клетку?
0
|
|||||||
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
||||||
| 28.12.2010, 22:13 | ||||||
|
Опять же все гораздо проще
1
|
||||||
|
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
|
||||||||||||
| 28.12.2010, 22:19 [ТС] | ||||||||||||
|
проверку же вставляем, перед тем как добавить фонарь? тут:
Грымзик, теперь нужно написать предикат, который ищет неосвещенные клетки?
0
|
||||||||||||
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
||||||
| 28.12.2010, 23:13 | ||||||
|
Да, теперь надо написать предикат, который проверяет все ли клетки освещены. Это опять делается через отрицание того, что есть хоть одна не освещенная клетка. И надо изменить последнее правило
obstanovka([],Fields,Fonari):-check(Fields,Fonari),write(Fonari). И поняла как можно сделать с пустыми черными клетками.
0
|
||||||
|
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
|
|||||||||||
| 28.12.2010, 23:18 [ТС] | |||||||||||
|
попробовал написать проверку остались ли неосвещенные клетки, вот что вышло:
0
|
|||||||||||
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
|
| 28.12.2010, 23:27 | |
|
Нет, не правильно, у Вас и идея не правильная (надо не только равенство столбцов и строк проверять, ведь черные клетки загораживают свет), и идея эта реализована не правильна. Я же писала, что удобно использовать предикат proverka.
proverka(l(X,Y),Fonari,Kletki) будет проверять освещена ли клетка с координатами (X,Y). Значит надо пройти все клетки (опять же используйте предикат for), если клетка не черная, на ней нет фонаря, то вызывайте предикат not(проверка). Если выполняется, то значит расстановка не подходит.
0
|
|
|
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
|
||
| 28.12.2010, 23:40 [ТС] | ||
|
нам же тогда надо еще сделать домен для обозначения пустого поля или как? просто нам же нужно проверять освещенность обычных клеток...
0
|
||
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
|
| 28.12.2010, 23:43 | |
|
Какая разница фонарь эта или проста клетка?!!!!!!!!!!!!!!!!!! Ведь в самом предикате это значение не имеет. Ну если не лень, то можете написать точно такой же предикат вида proverka(X,Y,Fonari,Kletki).
0
|
|
|
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
|
||||||||||||||||||||||||||||||||||||||||||||||||||
| 29.12.2010, 13:56 [ТС] | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
щас буду разбираться с for и переделывать предикат... Добавлено через 12 часов 36 минут его же надо объявлять в предикатах? если не объявляю, то пишет в этой строке:
вот код всей проги:
не могу даже с предикатом for разобраться, не знаю как с ним работать... пишу тупую прогу для того чтобы разобраться for, но не работает:
0
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
||||||
| 29.12.2010, 14:04 | ||||||
|
pr1 лишний, используйте member.
0
|
||||||
|
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
|
|||||||||
| 29.12.2010, 14:21 [ТС] | |||||||||
|
а в pr2 проверка, что не является фонарем... его все таки надо объявлять в предикатах? например for(i,i,i) Добавлено через 6 минут
0
|
|||||||||
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
||||||
| 29.12.2010, 21:43 | ||||||
|
Надо вот так:
1
|
||||||
|
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
|
||||||||||||||||
| 29.12.2010, 22:40 [ТС] | ||||||||||||||||
|
ясно...
на данном этапе значит программа должна выглядеть так?
а что по поводу предиката for, я выше описывал ошибку... дальше, я так понимаю, нужно написать предикат, который освещает неосвещенные клетки с помощь черных клеток в которых стоят 0(точнее для нашего решения -1)? Добавлено через 50 минут вот старый код, который выводит список фонарей:
можно программу упростить, чтобы просто выводила список фонарей, главное чтобы proverka работала, даже можно убрать ситуацию с пустой клеткой, вокруг которой могут быть хоть сколько фонарей, а то уже утром сдавать нужно, а еще пояснительную записку делать =(
0
|
||||||||||||||||
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
||||||
| 29.12.2010, 22:46 | ||||||
1
|
||||||
|
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
|
|
| 29.12.2010, 22:59 [ТС] | |
|
вот он выводит здесь [l(2,3),l(3,1),l(1,2)] [l(3,1),l(1,2)] [l(1,2)] []
т.е здесь верный вариант расстановки это первый список? а как можно сделать, чтобы выводил, только верный вариант?
0
|
|
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
|
| 29.12.2010, 23:39 | |
|
А я что-то этот баг не заметила, по идее его не должно быть, сейчас исправлю.
0
|
|
|
130 / 117 / 30
Регистрация: 14.11.2010
Сообщений: 707
|
||||||
| 29.12.2010, 23:45 [ТС] | ||||||
|
понял, надо fail поставить, чтобы самый первый выводил...
0
|
||||||
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
|
| 29.12.2010, 23:47 | |
|
Нет бага, это просто когда я отлаживала, я выводила промежуточные расположения фонарей, т.е просто сотрите write на 43 строке.
1
|
|
| 29.12.2010, 23:47 | |
|
Логическая головоломка в Visual Prolog 5.2
Головоломка про инструменты и языки логическая головоломка про прыжки в высоту Головоломка про аптекаря, бухгалтера и агронома. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|