Решение задачи о миссионерах и каннибалах на языке Haskell. Решение задачи о миссионерах и каннибалах на языке Haskell Прыгающие лягушки – игра

Решение задачи о миссионерах и каннибалах на языке Haskell. Решение задачи о миссионерах и каннибалах на языке Haskell Прыгающие лягушки – игра

Интересующихся прошу проследовать под кат.

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

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

Решение

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

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

Data State = State { missioners:: Int, cannibals:: Int, bank:: Char} deriving (Eq, Show)
Внимательный читатель может спросить: “Но почему в State имеется лишь два целочисленных поля? Миссионеры могут находиться как на левом берегу, так и на правом; то же самое относится и к каннибалам. Получается четыре числовых поля.”
Верное замечание, но по определенным причинам информация о количестве людей на берегу без лодки является избыточной (по каким - будет сказано чуть ниже).

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

Move01 (State msn cnb bk) = State (3 - msn + 2) (3 - cnb) (oppositeBank bk) move02 (State msn cnb bk) = State (3 - msn) (3 - cnb + 2) (oppositeBank bk) move03 (State msn cnb bk) = State (3 - msn + 1) (3 - cnb + 1) (oppositeBank bk) move04 (State msn cnb bk) = State (3 - msn + 1) (3 - cnb) (oppositeBank bk) move05 (State msn cnb bk) = State (3 - msn) (3 - cnb + 1) (oppositeBank bk)
Замечаете? Нам не нужно хранить информацию о том, сколько у нас миссионеров на противоположном берегу - мы всегда можем получить их количество, вычтя число миссионеров на текущем берегу из трех. То же самое относится к каннибалам.

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

OppositeBank:: Char -> Char oppositeBank bank | bank == "L" = "R" | otherwise = "L"
Создав новое состояние, мы должны проверить - является ли оно возможным (проще говоря, не пришли ли мы к ситуации, когда на берегу с лодкой оказалось четыре миссионера, или, что еще веселее - полтора дровосека минус один каннибал).

IsStatePossible:: State -> Bool isStatePossible (State msn cnb bk) = msn >= 0 && msn <= 3 && cnb >= 0 && cnb <= 3
Необходимо также проверить, является ли состояние безопасным. Тут возможны три варианта. Первый - число каннибалов равно числу миссионеров. Второй - на текущем берегу находится три миссионера (в этом случае на противоположном берегу миссионеров нет вовсе и ситуация безопасна). Третий является противоположностью второго - все миссионеры собрались на противоположном берегу.
Так и запишем.

IsStateSafe:: State -> Bool isStateSafe (State msn cnb bk) = (cnb == msn) || (msn == 3) || (msn == 0)

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

BfsSolution:: [] -> bfsSolution (path:tail") | State 3 3 "R" `elem` extensions = State 3 3 "R" : path | otherwise = bfsSolution $ tail" ++ where headState = head path extensions = filter (\x -> isStatePossible x && isStateSafe x)
bfsSolution представляет собой рекурсивную процедуру. Первым делом мы берем из списка уже построенных путей путь, находящийся в голове. Пытаемся его продолжить, строя все возможные (и безопасные) продолжения. Если одно из построенных продолжений является финальным состоянием, процедура заканчивает свою работу и возвращает продолженный путь. В противном случае мы добавляем все порожденные пути в хвост списка и вызываем процедуру заново.
Очень важным является условие

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

Последний штрих - функция main.
main = do mapM_ (putStrLn . show) $ (reverse . bfsSolution) ([])

Заключение

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

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

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

Людоеды и миссионеры

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

1 каннибал и 1 миссионер туда, миссионер обратно.
2 каннибала туда, 1 каннибал обратно.
2 миссионера туда, 1 миссионер и 1 каннибал обратно.
2 миссионера туда, 1 каннибал обратно.
И этот каннибал забирает остальных каннибалов на другую сторону.

Семья

Отец, мать и двое детей – сын и дочь, должны переравиться через реку. Поблизости случился рыбак, который мог бы одолжить им свою лодку. Однако, в лодке могут поместится только один взрослый или двое детей.
Как семье переправиться через реку и вернуть рыбаку его лодку?

Первыми переправляются дети.
Сын возвращается к маме-папе.
Папа едет на берег к дочери, потом дочь едет за братом и возвращается с ним к папе.
Сын едет к маме, отдает ей лодку, чтобы она переплыла к папе и дочери.
После того, как мама переправилась, дочь садится в лодку и едет к брату, подбирает его, и вместе они едут к родителям.
Дочь остается с родителями, а сын едет к рыбаку, отдает ему лодку.
Рыбак едет к родителям и высаживается.
Дочь садится и едет за братом, привозит его с собой обратно (наконец-то вся семья снова вместе), они отдают лодку рыбаку.
Лодка пересекла реку 13 раз.

Люди и обезъяны

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

Боязнь темноты

Одной семье надо пройти на другую сторону длинного, узкого и очень тёмного тоннеля. Отец может пройти сквозь тоннель за 1 минуту, мать – за 2, сын – за 4 и дочь за 5 минут. У них есть один факел, которого хватит ровно на 12 минут. В тоннеле могут идти не больше двух человек с факелом.
Как всей семье перебраться на другую строну тоннеля, если все боятся темноты?

Переправа через реку – игра

Цель игры – переправить всех людей через реку соблюдая следующие правила:

  1. На пароме могут находится не более 2-х человек.
  2. Только взрослые (отец, мать и полицейский) могут упралять паромом.
  3. Отец не может находится вместе с девочками в отсутствии матери.
  4. Мать не может находится вместе с мальчиками в отсутствии отца.
  5. Вор не может находится вместе с любыми членами семьи в отсутствии полицейского.

Click кружок, чтобы начать игру.
Click персонаж, чтобы переправить его на паром.
Click красную ручку, чтобы отправить паром на другую сторону.

Прыгающие лягушки – игра

Поменяйте местами лягушек. Три лягушки слева должны переместиться на 3 камня справа, а три лягушки справа – на 3 камня слева.

Каждая лягушка может прыгать только вперёд на соседний камень, если он пустует, или на пустующий камень позади соседней лягушки.
Click "REINICIAR", чтобы начать.

Цветы

Сколько у меня цветов, если все из них, за исключением двух, розы; а также все из них, за исключением двух, тюльпаны; помимо этого, все из них, за исключением двух, маргаритки?

Вычитание

Сколько раз можно вычесть число 2 из числа 32?

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

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

Убийство в пустыне

А, B и С переходили через пустыню. А задумал убить С, подлил ночью в его воду яда и уехал от каравана. В тоже хотел убить С. Не зная, что вода уже отравлена, той же ночью он проделал дыру в бурдюке с водой С и уехал от каравана. С остался один без воды и через несколько дней умер от жажды.
Кто является убийцей, А или В?

Не всё так просто. На мой взгляд, однозначного ответа на этот вопрос не существует. Каждая точка зрения имеет право на существование. Большинство считает, что убийцей был А. Адвокат В обязательно бы упомянул два факта: во-первых, вылить отравленную воду из чьей-то сумки вовсе не значит убить этого человека; и во-вторых, В продлил жизнь С, сам того не зная (он мог умереть от отравления ядом гораздо быстрее, чем от жажды). Однако адвокат А мог бы привести следующий аргумент в защиту своего подопечного: «Почему А виновен в смерти С, если С не выпил ни капли яда?». Математик и философ Рэймонд Меррилл Смаллиан так подытожил свою точку зрения на правосудие, моральную сторону вопроса и логику в отношении данного случая. С моральной точки зрения, очевидно, что А и В виновны в попытке совершения преступления. С точки зрения правосудия, два разных вида обвинения, которые можно им предъявить, существенно разнятся в избранной мере наказания.
А логика дает нам возможность написать целую книгу, опираясь всего лишь на этот случай.

Старший близнец

В один прекрасный день у Керри был день рождения. А через два дня день рождения был у её брата-близнеца Терри. Как так получилось?
Эта загадка заняла первое место на конкурсе «Как так?» в журнале "Гэймз магазин" (“Games Magazine”) в 1992 году.

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

Три каннибала согласны были помочь миссионерам переплыть реку, но их лодка вмещала только двух человек, а каннибалы ни в коем случае не хотели, чтобы миссионеры в какой-то момент превосходили их в числе. Как решить эту задачу?

Задание

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

Попробуйте действовать. Двигайте скрепки взад и вперед. Считайте, что в первый раз на решение задачи у вас может уйти целых 10 минут.

Отмечайте, сколько времени уходит на каждую

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

Записывайте, сколько времени ушло на каждое решение. Продолжайте упражняться, пока не сможете выполнить задачу два раза подряд меньше чем за 10 секунд каждый раз.

вместо этого вы видите ее как последовательность операций. Например, я, выполняя задачу, концентрирую внимание только на действии (учитываю, сколько человек в лодке), и поэтому ходы выглядят для меня так, как показано на рис. 14-1, Б.

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

Уже много лет я иду по ускользающему следу, стремясь лучше понять природу процесса научения у человека. Я хотел бы объяснить этот процесс. Я хочу знать, ка« кие в нем" участвуют психологические механизмы, какие образуются структуры знания. Я хочу, чтобы теория точно охарактеризовала внутренние операции при умственной деятельности, организацию информации в памяти и те изменения, которые происходят в процессе научения. Как можно осмыслить этот процесс?

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

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

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

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

Позвольте мне продемонстрировать вам этапы научения и выполнения действия. Я бы хотел, чтобы вы провели опыт, который займет около 30 мин. Вам понадобятся шесть предметов - три больших и три маленьких. Я пользуюсь большими и маленькими канцелярскими скрепками. Вам понадобятся также бумага, карандаш и какой-нибудь способ измерять время в секундах.

Я хочу, чтобы вы попробовали решать описанную на страницах 100-101 задачу о миссионерах и каннибалах. Потом я хочу, чтобы вы узнали, как она решается. Упражняйтесь снова и снова, пока не сможете выполнить эту задачу меньше чем за 10 секунд. Я имею в виду, чтобы в самом деле будете выполнять задачу - двигать скрепки взад и вперед. (Если эта задача вам знакома, все равно прочтите ее, я ее видоизменил.) Продолжите чтение основного текста только после того, как прочтете текст, набранный в рамке, и решите задачу о миссионерах и каннибалах в соответствии с заданным критерием.

Решение задачи показано на рис. 14-1. Его можно представить себе состоящим из 11 ходов, разделенных на три этапа:

I. Переправьте всех миссионеров на ту сторону.


14. Миссионеры и каннибалы 97

II. Переправьте всех каннибалов на ту сторону.

III. Снова переправьте на ту сторону миссионеров,
которым на этапе II пришлось вернуться на
эту сторону реки.

На этапах I и III ходы направлены вперед, но на этапе II дело обстоит не так. Ход 6 удаляет от цели. Он затрудняет большинство людей, так как противоречит интуиции.

Задача о миссионерах и каннибалах в ее варианте со скрепками удобна тем, что дает вам возможность за сравнительно короткое время превратиться из неуверенного, запинающегося новичка в опытного мастера. Посмотрим, что происходит, по мере того как задача решается снова и снова. Что меняется в вашем знании?

Заметьте, что вы, тренируясь в решении задачи, мало что узнаёте о том, как ее решать, но много узнаёте о том, как действовать. Постепенно ваша репрезентация задачи переходит от поисков решения к его запоминанию, а затем к выработке двигательного навыка. По мере повторения ваши движения становятся все более плавными и автоматическими. Сначала вы лишь с трудом справляетесь с задачей за 30 секунд. Позднее вы иногда проделываете все-это за 10 секунд. В конце концов вы всегда кончаете дело за 7 или 8, а в отдельных случаях даже за 5 секунд.



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

Рис. 14-1. Решение задачи с миссионерами и каннибалами. А - последовательность из 11 действий. В результате приобретенного опыта моя концептуализация изменилась: я делю задачу на три фазы, показанные внизу (Б). Меня касается только одна часть задачи - действие. Кто сидит в лодке? В каком направлении движется лодка? Научившись одиннадцати действиям, я могу безошибочно выполнять задачу с большой скоростью. Но я больше не осознаю, почему я совершаю каждый акт. В известном смысле я уже не понимаю, что делаю, хотя я хорошо справляюсь с задачей и хотя этой последовательностью действий я смог овладеть, только полностью поняв ее. Но бездумное выполнение действий иногда оказывается самым лучшим их выполнением. (По Woodworth, 1938.)

14. Миссионеры и каннибалы


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

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

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

Плавность составляет, пожалуй, один из самых очевидных элементов умелого выполнения задачи. Когда вы начали ее решать, вы, вероятно, часто сомневались, совершали много фальстартов и ошибок. Скрепки ускользали или сталкивались, и это мешало вам следить за ходом решения. Физические манипуляции с предметами отвлекали от плана действий. Но по мере совершенствования навыка вся процедура становилась более плавной; перерывы и фальстарты исчезали.

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


14. Миссионеры и каннибалы

Тех 30-40 минут, которые человек обычно согласен потратить на эту задачу. Но даже если вы манипулировали со скрепками всего 15 минут, то, вероятно, почувствовали, что некоторые ходы стали автоматическими. В конце концов вы можете научиться решать всю задачу мысленно, без внешней опоры. Сначала вы будете проделывать это, не пользуясь скрепками, а только двигая рукой. Потом и движения руки станут ненужными.

Умственная работа по мере упражнения уменьшается. Начальные стадии выполнения задачи требовали довольно большого умственного усилия. Сначала оно тратилось на расчеты: вы каждый раз должны были продумывать решение. Если бы во время решения задачи кто-нибудь обратился к вам с вопросом, это помешало бы вам. Затем нагрузка была переложена на первичную память. Вы пытались вспомнить решение, а не выводить его каждый раз. Позднее нагрузка на память сильно уменьшилась- собственно говоря, она почти исчезла.

Продемонстрировать влияние стресса, пожалуй, труднее всего - ведь решение задачи о миссионерах и каннибалах вряд ли может стать вопросом жизни и смерти! Может быть, вы могли бы собрать аудиторию и объяснить, что решите задачу точно за 10 секунд с первой попытки. Держите пари на деньги (или, еще лучше, поставьте на карту вашу честь). Если вы заключите пари слишком рано, то можете проиграть, так как скорее всего присутствие публики скажется на выполнении задачи. Наловчившись дома, я однажды безрассудно сделал хвастливое заявление в классе, а дело обернулось неуклюжими движениями пальцев и непослушными скрепками.

Отношение к задаче меняется, по мере того как вы овладеваете ее решением. Когда вы приступили к задаче о миссионерах и каннибалах, вы сосредоточились на запоминании ходов (или на их расчете). По мере упражнения ваше внимание перемещалось. Если вы практиковались достаточно долго, то достигали точки, когда уже могли смотреть, как ваши руки выполняют какой-то этап, и думать в это время над тем, что вам предстоит делать дальше. Описание задачи меняется. По мере совершенствования вы уже не считаете, что задача касается миссионеров и каннибалов, как она описана на рис. 14-1, Л;


100 14. Миссионеры и каннибалы

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

"Сидят каннибалы и после трапезы рассуждают: - "Бог на том свете спросит только за тех, чьи кости обглодали добела и разбросали. А за тех кого только объели и захоронили по христиански, спрашивать не будет. Греха нет".

Да, собственно, и не анекдот это. Вот цитата о племени людоедов яли: "Принятие яли христианства еще не означает, что они полностью расстались со своими привычками и ритуалами. Племя яли все-таки по-прежнему живет по законам и своих предков. Даже те яли, что приняли христианскую веру, не расстаются со своим привычным образом жизни. Некоторые гимны яли, которые они поют в церкви, основаны на мифах племени …В одном из мифов говорится о том, что поедание врага не является актом жестокости, дикости, варварства. Это ритуал, имеющий глубокое значение. Сегодня яли верят в Христа и больше не едят людей с белым цветом кожи. Однако не едят они их потому, что белый цвет кожи ассоциируется у них с трауром. Яли кажется, что белые люди - слуги смерти. Людей с темным цветом кожи есть не возбраняется". Просто, как у Джеймса Джойса в "Улисс": "Белых миссионеров не едят, слишком солоны. Как острого засола свинина". Но некоторых все же ели…

Каннибалы для Господа

Не всех миссионеров ждал такой печальный конец - быть съеденными (печальный - это при взгляде со стороны: для них то, возможно, это была "радость мученичества "). Иногда проповедь была успешной. Широко известная христианская книга о миссионере Джоне Патоне "Миссионер среди дикарей Южного моря" рассказывает нам об удавшийся миссии этого проповедника. Ему пришлось нести Слово Божие там, где после туземной стычки "убитые были зажарены и съедены совсем близко от источника, из которого миссионеры пользовались водой. Вода была красной от крови", в тех краях, про которые антрополог Эдвард Гиффорд из Калифорнийского университета в 1951 году, изучив материалы доисторической культуры Фиджи, писал, что там “человек был наиболее часто потребляемым в пищу позвоночным животным после рыбы”. Но Патону повезло: “24 октября 1869 года, через одиннадцать лет после своего приезда, Патон основал общину и преподал ей первое причастие. В вечере приняли участие двенадцать (как строго выдержан регламент! - Absentis) обращенных каннибалов. “Когда я вложил хлеб и вино в эти руки, когда-то испачканные человеческой кровью, а теперь протянутые, чтобы принять и вкусить любовь Спасителя, я получил представление о той радости Славы, которая чуть не разорвала на куски мое сердце”. И Патон добился выполнения стоявшей перед ним задачи - заполучения новых прозелитов: "в конце концов, на Анейтьюме уже 3500 каннибалов стали христианами, на островах Фиджи их было 7000, на Самоа - 3400…На Аниве произошло еще большее чудо: постепенно каннибалы превращались в христиан, которые начали жить по-новому. Например, Нази - свирепый убийца и людоед - стал христианином, ревностно читал Библию и, в конце концов, мог объяснять ее другим анивитянам. Джон достиг цели: приобрести каннибалов для Господа Иисуса ".

Мы не будем углубляться в теологический вопрос, с чего бы это Иисус, который “послан только к погибшим овцам дома Израилева”(Мат10-24), а вовсе не ко всяким "псам" и "свиньям" стал вдруг, по мнению миссионеров, проявлять повышенный интерес к “приобретению каннибалов”, а рассмотрим сомнение "Словаря скептика" (http://refill.ru/skeptic/religion/kannibal.htm).