Автор: Админка

Известная задача о волке козе и капусте


Ответ на задачу про волка, козу и капусту.

Задача про волка, козу и капусту – одна из самых известных и популярных задач о переправе. В данной статье мы разберём решение данной задачи.

Формулировка.

Однажды крестьянину понадобилось перевезти через реку волка, козу и капусту. У крестьянина есть лодка, в которой может поместиться, кроме самого крестьянина, только одно существо или предмет — или волк, или коза, или капуста. Если крестьянин оставит без присмотра волка с козой, то волк съест козу; если крестьянин оставит без присмотра козу с капустой, коза съест капусту. Как крестьянину перевезти на другой берег всё своё имущество в целости и сохранности?

Решение.

Стоит сразу заметить, что коза взаимодействует сразу с двумя объектами: и волком, и капустой. Поэтому первой с собой стоит взять именно её.

  • Берём козу и перевозим её на другой берег, высаживаем.
  • Возвращаемся обратно, берём волка и перевозим его на другой берег.
  • Высаживаем волка, забираем козу и везём её обратно.
  • Высаживаем козу, забираем капусту и везём её на другой берег.
  • Высаживаем капусту и возвращаемся обратно, берём козу и везём её на другой берег
  • Высаживаем козу – все в сборе.

У этой задачи есть и другой не очень принципиально отличающееся решение: капусту и волка можно поменять местами. Основная идея – не оставлять козу с волком или капустой.

Похожие статьи

Решение проблемы с волком, козой и капустой (форум Programming Diversions на Coderanch)

Нет, Джим Инст, вам не нужно думать о том, что происходит, когда фермер переходит реку, или о том, что делает лодка; вы просто предполагаете, что лодка находится там, где находится фермер. На самом деле я получил 16 возможных состояний, пронумерованных от 0 до f, где самый старший бит (3-й бит = 8) представляет фермера, 2-й бит = 4 - это волк, 1-й бит = 2 - это гусь, а 0- -й бит (младший бит = 1) представляет собой зерно капусты или что-то еще.

Итак, f означает, что все четверо находятся на этой стороне реки, 0 означает, что все четыре пересеклись, 1 означает, что капуста одна на этой стороне реки, 2 означает, что гусь один на этой стороне реки и т. Д. можно было бы подумать, что это означает, что дополнение числа находится на другой стороне реки, поэтому 0 означает f на другой стороне. Тогда у вас будет инвариант thisSide + thatSide == 0xf.
По эту сторону реки есть три запрещенных штата: 3, 6, 7, где гусь ест капусту, лес - козу, или и то, и другое.Это означает, что на другой стороне есть три запрещенных состояния, 8 9 и c. Мы знаем, что 8 + 7 или 9 + 6 или c + 3 в сумме дают 0xf. Остается в общей сложности 10 разрешенных состояний. За каждым разрешенным состоянием могут следовать 1, 2 или 3 разрешенных состояния-преемника.

Правила таковы, что фермер должен переходить дорогу каждый раз в одиночку или в сопровождении одного предмета. Это эквивалентно побитовой операции XOR 8 9 a или c; если у вас есть переменные thisSide и thatSide, то одна и та же операция должна быть применена к обеим сторонам, чтобы сохранить инвариант класса.Также вы удаляете из результатов любое из шести запрещенных состояний.
Вы можете вернуть состояния обратно на английский с помощью побитового И: private final int FARMER = 8, WOLF = 4, GOOSE = 2, CABBAGE = 1; . . . . если (состояние и ФЕРМЕР> 0) outputString + = "фермер"; если (состояние & WOLF> 0) outputString + = "волк"; и т. д.

Затем вы получаете дерево, начинающееся с f, и затем вы проводите поиск дерева, пока не найдете в нем 0. Для достижения 0 требуется ровно 7 операций, первая из которых - состояние ^ = FARMER + GOOSE;

*********************************************** ***************************
В LISP он читает что-то вроде этого, предполагая, что ваш алгоритм поиска по ширине и оператор -> уже поставлено: (defparameter * farmer * '((fwgcR wcRfg) (fwgRc wRfgc gRfwc) (fwcRg wcRfg wRfgc cRfwg) (fgcRw gRfwc cRfwg) (fgRwc gRfwc Rfwgc) (wcRfg fwcRg fwgcR) (gRfwc fgRwc fwgRc fwcRg) (cRfwg fwcRg fgcRw) (wRfgc fwgRc fwcRg) (Rfwgc fgRwc))) (defun farmer-lmg (состояние) (-> * фермер * штат)) (width-search 'fwgcR' Rfwgc # 'farmer-lmg) Аббревиатуры (очевидно) означают фермерскую волчью гусиную капусту и РЕКУ; те, кто до R, находятся на этой стороне, а те, что после R, находятся на этой стороне.Бит defun создает генератор легального хода (LMG).
*********************************************** **************************
С предоставленными нами утилитами LISP он работает, но, кажется, всегда дает мне один и тот же ответ . Я думаю, есть 4 возможных решения, но первая операция всегда заключается в том, что фермер переносит гуся, а четвертая операция всегда возвращает гуся.

[править] Незначительные орфографические исправления и значение lmg [/ править]
[30 ноября 2007 г .: Сообщение отредактировал: Кэмпбелл Ричи]

.

пролог - Переполнение стека в решателе для головоломки Wolf Goat Cabbage

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

искусственный интеллект - PDDL - Коза, волк и капуста

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.Задача

о волке, козе и капусте Wikipedia

Задача о волке, козе и капусте - это головоломка о пересечении реки. Он восходит как минимум к 9 веку, [1] и вошел в фольклор ряда этнических групп. [2] [3]

Рассказ []

Однажды фермер пошел на рынок и купил волка, козу и капусту. По пути домой фермер подошел к берегу реки и арендовал лодку.Но переходя реку на лодке, крестьянин мог нести только себя и одну из своих покупок: волка, козу или капусту.

Если оставить вместе без присмотра, волк съест козу, а коза съест капусту.

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

Решение []

Первый шаг, который необходимо сделать, это отпустить козу через реку, так как любые другие действия приведут к тому, что коза или капуста будут съедены.Когда фермер возвращается на исходную сторону, у него есть выбор: переправить ли волка или капусту следующей. Если он повезет волка, ему придется вернуться за капустой, в результате чего волк съест козу. Если он перенесет капусту через секунду, ему нужно будет вернуться, чтобы забрать волка, в результате чего коза съест капусту. Дилемма решается, если взять волка (или капусту) за и вернуть козу . Теперь он может взять капусту (или волка) и, наконец, вернуться за козой.

Анимация решения

Его действия в решении сводятся к следующим этапам:

  1. Взять козу за
  2. Возврат
  3. Возьмите волка или капусту свыше
  4. Возвращение с козой
  5. Возьмите капусту или волк за
  6. Возврат
  7. Взять козу за

Таким образом, переходов семь, четыре вперед и три назад.

Визуализация возможных ходов в головоломке. Прописные буквы обозначают лису, гуся и фасоль в пункте назначения, а строчные - в исходной точке.Движение каждого объекта представлено координатной осью. Все 8 допустимых и недопустимых размещений показаны как вершины куба, а все 12 перемещений - как его края. Недействительные ходы зачеркнуты, а 2 решения показаны синим и фиолетовым.

Возникновение и вариации []

Головоломка - одна из множества головоломок о переходе через реку, цель которой состоит в том, чтобы переместить набор предметов через реку с различными ограничениями.

В самом раннем известном возникновении этой проблемы, в средневековой рукописи Propositiones ad Acuendos Juvenes , три объекта - это волк, коза и капуста, но существуют и другие косметические вариации головоломки, такие как: волк , овцы и капуста; [4] [2] , п.26 лиса, курица и зерно; [5] лиса, гусь и кукуруза; [6] и пантера, свинья и каша. [7] Логика головоломки, в которой есть три объекта: A , B и C , так что ни A и B , ни B и C не могут оставаться вместе, остается прежним.

Пазл был найден в фольклоре афроамериканцев, Камеруна, островов Зеленого Мыса, Дании, Эфиопии, Ганы, Италии, Румынии, России, Шотландии, Судана, Уганды, Замбии и Зимбабве. [2] , стр. 26–27; [8] Ему присвоен порядковый номер H506.3 в указателе мотивов народной литературы Стита Томпсона и ATU 1579 в системе классификации Аарна – Томпсона. [9]

Эта головоломка была любимой Льюисом Кэрроллом, [10] , и она была перепечатана в различных сборниках развлекательной математики. [2] , п. 26.

В своих мемуарах «Arabian Nights» Встречи с замечательными людьми , метафизический маг Г.И. Гурджиев цитирует эту загадку как «Волк, коза и капуста». Он отмечает: «Эта популярная загадка ясно показывает, что ... не только благодаря изобретательности, которой должен обладать каждый нормальный человек, но, кроме того, он не должен быть ленивым и не жалеть свои силы, но должен пересекать реку лишний раз, чтобы достижение его цели ".

Варианты головоломки также появляются в приключенческой игре Broken Sword: The Sleeping Dragon , игре-головоломке Nintendo DS Professor Layton and the Curious Village и в эпизоде ​​ The Simpsons «Gone Maggie Gone», где Гомер должен пересечь реку с Мэгги, Маленьким Помощником Санты, и банкой с крысиным ядом, похожей на леденец.В серии Class из серии 3000 «Westley Side Story» Санни и его ученики выполняют аналогичное упражнение с цыпленком, койотом и мешком кукурузы. Эпизод Между львами «Головоломка фермера Кена» изображает превращение его в компьютерную игру с котом, курицей и мешком семян.

В эпизоде ​​ Bull «Правосудие для кабеля» Бенни начинает загадку со слов «у человека есть лиса, утка и мешок с фасолью». Бык необъяснимо заявляет: «Нет ответа», и все ему верят. https://www.springfieldspringfield.co.uk/view_episode_scripts.php?tv-show=bull-2016&episode=s03e04

Внешние ссылки []

.

Смотрите также


Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.



Понравился рецепт? Подпишись на RSS! Подписаться!