Миссионеры и каннибалы как пройти

Решение головоломки о каннибалах

Как переправились миссионеры и каннибалы? Решение головоломки

Миссионеры и каннибалы как пройтиДля решения этой задачи надо составить план перевозок. Положим, на другой берег переправятся два каннибала, затем один из них вернется назад и захватит с собой миссионера — стоп, тогда на другой стороне окажутся два каннибала и только один миссионер. Значит, этот вариант не годится.

Многие схемы переправки через реку сразу отпадают, поскольку приводят к гибели миссионеров. Решающий данную задачу часто сам ставит себя в тупик, исходя из неверного — но внешне очевидного — предположения. Так, он берет за основу вариант, когда на ту сторону всегда переправляются два путешественника, а назад возвращается один, как еще можно перевезти всех через реку? Это предположение ошибочно. И наконец, высвечивается вариант, когда два ранее переправившихся в разное время путешественника возвращаются назад. Он является тем озарением, после которого остаток решения дается без труда.

Эта задача, как и многие другие головоломки, иллюстрирует смешанный вариант решения: в ходе размышлений срабатывает интуиция, но для окончательного решения задачи одного эвристического озарения недостаточно — требуются еще и точные логично-последовательные расчеты. Практически та же ситуация характерна при решении всех «чисто интуитивных» проблем в искусстве, науке, технике и даже в сыщицкой практике знаменитого Джеймса Бонда.

Этап На этом берегу На том берегу

1. Начальное положение МММККК ()

2. Первыми пересекают реку два каннибала МММК () КК

3. Один из них возвращается МММКК () К

4. Снова два каннибала переправляются МММ () ККК

5. Опять один из них возвращается МММК () КК

6. Пересекают реку два миссионера МК () ММКК

7.Каннибал и миссионер возвращаются назад ММКК () МК

8. Пересекают реку два миссионера КК () МММК

9. Возвращается один каннибал ККК () МММ

10. Следующими пересекают рек каннибал К () МММКК

11. Один из них возвращается КК () МММК

12. Завершается переправа с двумя каннибалами () МММККК

Обратите внимание, что на 7-м этапе миссионер и каннибал, ранее переправившиеся через реку на различных этапах, вместе возвращаются назад. Если бы вернулся лишь один из них, на одном из берегов возникло бы численное преимущество каннибалов.

Источник

Логические задачи и головоломки

Три миссионера и три каннибала должны пересечь реку в лодке, в которой могут поместиться только двое. Миссионеры должны соблюдать осторожность, чтобы каннибалы не получили на каком-либо берегу численное преимущество. Как переплыть реку?

Ответ: Первыми пересекают реку миссионер и каннибал. После этого миссионер возвращается. Затем пересекают реку два каннибала. Один из них возвращается. Потом два миссионера пересекают реку. Миссионер и каннибал возвращаются. Два миссионера пересекают реку. Один каннибал возвращается. Два каннибала пересекают реку. Один каннибал возвращается. Два оставшихся каннибала пересекают реку.

Комментарии

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

Я считаю,что изначально нарушено условие,т.е. оно было некорректно сформулировано. Уже в самом начале на том берегу становится численно больше каннибалов,т.к. миссионеров там вообще нет!

Если миссионеров там нет, то им ничего не угрожает, что соответствует смыслу условия.

Не может, т.к. в условии не указан отдельный перевозчик => им является либо миссионер либо каннибал.

в етой задаче меня смущает численое преймущество, получаетсо что мы оставляем на другом берегу канибала, и опля у нас численый перевес на берегу, пока мисионер маслает назад канибал посылает всех подальше й идет дамой!
«чтобы каннибалы не получили на каком-либо берегу численное преимущество»
или я не внимательно прочитал.

Как только миссионер возвращается оставив ганибала на противоположном берегу, то сразу получает численное преимущество.

2и2 на одном берегу, 1и0 на другом берегу, 1 в лодке => миссионеры в безопасности.

каннибал переносит одного каннибала потом другого возврощается выходит. садятся в лодку два мисионера переходят реку. назад возврощяются каннибал и миссионер.получается по каннибалу и миссионеру на двух берегах и в лодке. потом садятся два миссионера переплывают. а единственный каннибал оставшийся с миссионерами помогает уже тех двух каннибалов.

на полпути к противоположному берегу каннибал пробивает дно лодки, она тонет, миссионера съдают пираньи; в то врямя каннибал вплавь добирается к своим друзьям на берег и там они дружно расправляются с двумя миссионерами

аче канибала не сьедят

Интересно, а сколько каннибалов облизываются в засаде на другом берегу? )))

Проще всего будет миссионерам съесть одного каннибала)

(К)аннибалов никогда не больше, чем (М)иссионеров на одном берегу

1) Едут два каннибала
2) Едут два миссионера
3) Едут миссионер и каннибал

ОШИБКА! Хотя бы один должен управлять лодкой (паромщика по условию нет). Поэтому ответ автора,учитывая условие,правильный.

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

А миссионеры могут издеваться над каннибалами?)))

1. Миссионер и Каннибал
2. Миссионер возвращается обратно и берёт каннибала.
3. Опять возвращаеся миссионер и берёт миссионера.
4. Опять возвращается миссионер и берёт ещё одного миссионера.
5. Опять возвращается миссионер и берёт каннибала.
6. Возвращается каннибал и берёт последнего каннибала.

на втором шаге два миссионера заразились канибализмом и сожрали одного каннибала.

1. плывут М и К (остаются ММ + КК)
2. М возвращается и берет еще К (остаются ММ + К и К на другом берегу)
3. К возвращается ( на этом ММ + КК, на том К + М)
4. плывут два М ( остаются КК)
5 ММ остаются на другом берегу со своим собратом (МММ), а К отправляется перевозить своих.

А у Вас 2 К вкусно обедают на правом берегу 1 М в конце второго хода ((

Минимально возможная последовательность:

Конечно можно поменять все М и К местами, так что, коротких решений 2 🙂

Алекс, на пятом ходу, когда на правый берег поплывут М и К, образуется численное преимущество К (их там станет 3 и они с удовольствием перекусят 1 М).

А я нашел решение, на которое затрачивается всего полминуты. Сначала уезжают два каннибала, возвращается один и увозит оставшегося собрата. Получается на одном берегу остаются миссионеры, на другом каннибалы. Далее один каннибал возвращается к миссионерам и остается там. Садим двух миссионеров и увозим их к каннибалам, высаживаем миссионера, забираем каннибала, увозим. Высаживаем каннибала, забираем миссионера, высаживаем обоих на другом берегу, садим каннибала и отправляем его назад, он и перевезет своих товарищей на другой берег

первому каннибалу нужно стать паромщиком
1)1К+2К
2)1К+1М
3)1К+2М
4)1К+3М
5)1К+3К

Источник

Решение задачи о миссионерах и каннибалах на языке Haskell

Формулировка задачи

С одного берега реки на другой необходимо переправить троих миссионеров и троих же каннибалов. В лодке, на которой они будут перемещаться, одновременно могут поместиться лишь два человека, при этом если в ходе перемещений количество каннибалов на одном берегу будет превышать число миссионеров, миссионеры будут съедены (чего, разумеется, нужно избежать). Необходимо найти последовательность безопасных (не приводящих миссионеров к печальной судьбе Джеймса Кука) перевозок.

Решение

Театр начинается с вешалки, а программа на языке Haskell начинается с импорта необходимых для работы модулей. С них и начнем.

Для хранения информации о расположении миссионеров, каннибалов и береге, на котором находится лодка, определим свой тип данных.

Внимательный читатель может спросить: “Но почему в State имеется лишь два целочисленных поля? Миссионеры могут находиться как на левом берегу, так и на правом; то же самое относится и к каннибалам. Получается четыре числовых поля.”
Верное замечание, но по определенным причинам информация о количестве людей на берегу без лодки является избыточной (по каким — будет сказано чуть ниже).

Для того, чтобы наша лодка могла переплывать с одного берега на другой, необходимо задать все возможные перемещения. Их всего пять:

Замечаете? Нам не нужно хранить информацию о том, сколько у нас миссионеров на противоположном берегу — мы всегда можем получить их количество, вычтя число миссионеров на текущем берегу из трех. То же самое относится к каннибалам.

oppositeBank — простейшая функция, изменяющая метку берега на противоположную.

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

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

Теперь переходим к самому главному — поиску в ширину. О том, что это такое, можно узнать, перейдя по ссылке, я же сосредоточусь на описании реализации.

bfsSolution представляет собой рекурсивную процедуру. Первым делом мы берем из списка уже построенных путей путь, находящийся в голове. Пытаемся его продолжить, строя все возможные (и безопасные) продолжения. Если одно из построенных продолжений является финальным состоянием, процедура заканчивает свою работу и возвращает продолженный путь. В противном случае мы добавляем все порожденные пути в хвост списка и вызываем процедуру заново.
Очень важным является условие

Оно не позволяет возвращаться в одно из состояний, пройденных алгоритмом в процессе построения данного пути. Например, если на шаге n мы переслали с левого берега на правый двух миссионеров, то на шаге (n+1) нет никакого смысла возвращать их обратно на левый берег — впустую потратим время, и не продвинемся в решении ни на шаг (приведенная программа находит на моем нетбуке решение за 0.85 cекунды; убрав приведенное выше условие, я получаю нехилый рост производимых вычислений — для нахождения ответа требуется уже 45 секунд).

Последний штрих — функция main.

Заключение

Данная статья никоим образом не претендует на полноту обзора и исчерпывающее объяснение всех возможных решений данной задачи. Интересующиеся читатели могут реализовать алгоритм поиска в глубину с возвратами; есть также еще одна (пока что не реализованная) задумка по “доведению до ума” вышеизложенного решения — попробовать отойти от хранения всех сгенерированных решений в списке списков и реализовать n-арное дерево.

Источник

Миссионеры и людоеды

Вопрос: В этой задаче три миссионера и три людоеда должны пересечь реку, используя лодку, которая может перевозить не более двух человек, при условии, что для обоих банков число миссионеров, присутствующих на берегу, не может быть в меньшинстве по сравнению с людоедами. Лодка не может самостоятельно пересечь реку без людей на борту.

Решение:
Сначала давайте рассмотрим, что и миссионеры (M), и каннибалы (C) находятся на одной стороне реки.
Лево право
Первоначально позиции: 0M, 0C и 3M, 3C (B)

Теперь давайте отправим 2 людоедов слева от банка: 0M, 2C (B) и 3M, 1C

Отправьте одного каннибала слева направо: 0M, 1C и 3M, 2C (B)

Теперь отправьте 2 оставшихся людоеда слева: 0M, 3C (B) и 3M, 0C
Отправьте 1 каннибала направо: 0M, 2C и 3M, 1C (B)

Теперь отправьте 2 миссионеров слева: 2M, 2C (B) и 1M. 1С

Отправьте 1 миссионера и 1 людоеда справа: 1M, 1C и 2M, 2C (B)

Отправьте 2 миссионеров слева: 3M, 1C (B) и 0M, 2C

Отправьте 1 каннибала направо: 3M, 0C и 0M, 3C (B)

Отправить 2 людоедов слева: 3M, 2C (B) и 0M, 1C

Отправьте 1 каннибала направо: 3M, 1C и 0M, 2C (B) ‘

Отправить 2 людоедов слева: 3M, 3C (B) и 0M, 0C

• Здесь (B) показывает положение лодки после выполнения действия.
Поэтому все миссионеры и людоеды благополучно перешли реку.

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

Источник

Три миссионера и три каннибала

Можно попробовать определить, какие же решения тебе предстоит принять. Или подумать о более глубинных аспектах жизни. А можно просто повалять дурака.

Фристайл дает тебе возможность решить, о чем необходимо подумать. После нескольких недель ведения дневника привычка начинает приобретать определенные формы. Ты наращиваешь темп, твой природный интеллект может самовыражаться каждый день. Дневник является символом того времени, которое ты посвящаешь умственным упражнениям. Если когда-нибудь ты почувствуешь себя интеллектуально скованным, погруженным в умственную летаргию или пораженным мозговой слабостью, открой дневник упражнений и почитай его.

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

При правильном исполнении движения ума становятся искусством, чудом красоты. Если ты начнешь мыслить подобным образом, то мышление превратится в эстетическое наслаждение.
Том улыбнулся и поблагодарил Мака за дневник. Спускаясь вниз по лестнице, он чувствовал приятное возбуждение от осознания перспективы, открывающейся перед ним. Он пролистал чистые страницы дневника и представил себе, как со временем он заполнит их мыслями и озарениями. Том понял, что теперь у него появилось средство сохранить свои мысли ясными.

Один каннибал возвращается. 2 миссионера пересекают реку. Миссионер и каннибал возвращаются. 2 миссионера пересекают реку. Один каннибал возвращается.

Первый игрокВторой игрокТретий игрок
3-я игра36.0036.0036.00
2-я игра18.0018.0072.00
1-я игра9.0063.0036.00
Начало игры58.5031.5018.00

После третьего переливания в ведре останется соответственно 16/5-(1/5*16/5)=64/25 литров воды.
Задача о скульпторе (стр. 138)
Расположите скульптуры следующим образом:

Миссионеры и каннибалы как пройти

Миссионеры и каннибалы как пройти

Миссионеры и каннибалы как пройти

Мальчик, остававшийся там, пригоняет лодку обратно. Итак, для того чтобы перевезти через реку одного мужчину, потребуются 4 перегона лодки. Так как мужчин семеро, всего необходимо 28 перегонов.
Крыса и лабиринт

Миссионеры и каннибалы как пройти

Миссионеры и каннибалы как пройти

В банке, помеченной как “Шоколадное печенье”, должно находиться миндальное, так как сказано, что все банки помечены неправильно. И значит, в банке с этикеткой “Овсяное печенье” находится шоколадное.
Цепь
Самый рациональный способ сделать цепь из 6 кусков по 5 звеньев состоит в том, чтобы распилить все 5 звеньев одного куска и с их помощью соединить остальные 5 кусков. При этом общая стоимость работы составит 1 доллар 30 центов, что на 20 центов дешевле стоимости новой цепи.
Ваши носки
Вам нужно достать из комода только три носка.
Серебряный брусок
Хозяин дома может распилить серебряный брусок в трех местах, разделив его на 4 куска, длина которых будет соответственно 1, 2, 4 и 8 дюймов. В первый день он отдаст рабочему самый короткий кусок. На второй день он отберет у рабочего однодюймовый кусок и даст ему двухдюймовый. На третий день он вновь даст ему однодюймовый.

На четвертый день хозяин заберет у рабочего однодюймовый и двухдюймовый кусок и взамен даст четырехдюймовый и так далее.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *