Решаем все 42 версии загадки про зелья из Гарри Поттера

Автор оригинала: kevingal.com
  • Перевод
В конце книги «Гарри Поттер и философский камень» есть интересная загадка. Гарри и Гермиона входят в комнату, после чего входы в неё блокирует волшебный огонь, и выйти из неё они смогут, только решив следующую загадку:
Перед тобой — опасность, а позади — спасенье,
Помогут тебе двое, кого найдешь средь нас;
С одной из семерых вперёд продолжишь ты движенье
Другая же назад тебя перенесёт тотчас.
В двоих из нас найдёшь ты лишь крапивное вино,
А три несут погибель, стоят в ряду тайком.
Так выбирай же, из какой отведать суждено,
Для этого четыре подсказки мы даём.
Напрасно яд пытался скрыть свой смертоносный жар,
Всегда его найдёшь ты налево от вина,
И знай, что те, кто по краям, различный держат дар,
Но если хочешь дальше, не поможет ни одна.
Разнимся мы размером все, от края и до края,
Сидит не в меньшей смерть твоя, но и не в большей тоже;
Вторая с правого конца и с левого вторая
По вкусу — словно близнецы, хоть с виду непохожи.
[из «народного перевода» книги «Гарри Поттер и философский камень»]



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

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

Секундочку, а откуда взялось 42 варианта?


Всё оттого, что местоположения «меньшего» и «большего» зелий не указаны. Большая может находиться на одном из семи мест, что даёт 6 оставшихся вариантов для меньшей, итого 7 * 6 = 42. Узнать, какую именно расстановку имела в виду Джоан Роулинг, придумывая эту загадку, не получится, если только она не расскажет об этом в своём твиттере. Ну а пока этот неотвратимый день не наступил, мы можем выбрать случайную версию и поработать с ней. Однако гарантий её решаемости не будет, поэтому мы и работаем на общее благо, решая все 42 варианта загадки (или доказывая их нерешаемость).

ДА РЕШАЙ УЖЕ


Во-первых, вот все ограничения загадки, переформулированные в простом виде:

  1. Есть два безобидных зелья, 3 отравленных, одно, позволяющее пройти вперёд, и одно, позволяющее вернуться назад.
  2. С левой стороны от каждого из двух безобидных зелий стоит ядовитое.
  3. Зелья с обоих краёв разные, и ни одно из них не даёт пройти вперёд.
  4. Самая большая и самая маленькая бутылки не содержат яда.
  5. Вторая бутылка слева и вторая бутылка справа содержат одно и то же зелье.

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



Попробуем тупо перебрать все варианты – брать по одной бутылке и подбирать все возможные варианты содержимого.

К примеру, в первой бутылке не может содержаться зелье, продвигающее нас вперёд из-за ограничения №3. Также она не содержит безопасного зелья из-за ограничения №2 – слева от неё не может находиться отрава. Это оставляет нам варианты с отравленным зельем и зельем, возвращающим назад. Попробуем оба варианта.

В последующих изображениях зелёные зелья обозначают яд, оранжевые – безопасные напитки, синие – зелье, двигающее назад, пурпурное – двигающее вперёд.





Повторим этот процесс для обоих рабочих вариантов – возьмём вторую бутыль и попеременно попробуем все допустимые варианты содержимого. Это даст нам следующее:









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



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

Применение алгоритма ко всем вариантам даёт нам следующие решения. 8 вариантов загадки решаемы, у 8 нет решений и у 26 есть несколько решений.



Подробнее о решениях


Есть ли что-то общее у всех решаемых вариантов загадки? Да! Обратите внимание, что в них самая маленькая или самая большая бутылки стоят на 2-м или 6-м местах. Это позволяет нам сделать вывод, что 2-я и 6-я бутылка содержат безопасные зелья из-за ограничений №4 и №5. Без этого шага мы не можем устранить возможность того, что в этих бутылках яд, и в итоге приходим к нескольким возможным решениям. Также решаемые варианты требуют, чтобы вторая «особая» бутылка (самая маленькая или самая большая) стояли на 3-м или 4-м месте. Иначе точное местоположение зелья, двигающего нас вперёд, найти не получается.

Итоги


Закончу цитатой из книги.
Гермиона с шумом выдохнула, и Гарри изумлённо заметил, что она улыбалась – это было последнее занятие, которое могло бы прийти ему в голову. «Гениально, — сказала Гермиона. – Это не магия – это логика, загадка. У множества величайших магов не наберётся и грамма логики, и они застряли бы здесь навечно».
Но, погодите-ка – может, мы сумеем понять каноническую версию загадки на основе диалога из книги:
«Поняла, — сказала она. – Самая маленькая бутылка проведёт нас через чёрный огонь, и к Камню».



«А какая даст тебе вернуться через пурпурный огонь?»

Гермиона указала на округлую бутыль с правой стороны ряда.
Чёрт возьми. Этот вариант всё равно даёт нам несколько решений. Пишите твиты, ДР.

Код


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

Подробнее
Реклама

Комментарии 21

    0
    Вторая с правого конца и с левого вторая
    По вкусу — словно близнецы, хоть с виду непохожи.

    Можно воспринять, как дополнительное ограничение, что бутылки 2 и 6 разные по размеру.
      0
      «Разнимся мы размером все, от края и до края»
        +1
        Там в условии разные все 7 бутылок, просто размер всех, кроме самой маленькой и самой большой, для решения не важен, и они нарисованы одинаковыми. Кстати, «от края и до края» в переводе создаёт ощущение того, что они выровнены по росту, но в английской версии этой строчки нет, там: «Third, as you see clearly, all are different size» — «В третьих, ясно видно, все разного размера».
        0
        Если учесть дополнительные сведения по поиску истинного варианта, то есть два варианта решения (зависит от положения маленькой бутылки) и два варианта размещения большой в каждом из них.
        1: Poison
        2: Wine. The largest bottle if #6 is not.
        3: Poison or Forward Potion if the smallest bottle.
        4: Forward Potion if the smallest bottle, or Poison if not.
        5: Poison
        6: Wine. The largest bottle if #2 is not.
        7: Back Potion
          0
          Чем например такой вариант:
          1: Back Potion
          2: Poison
          3: Wine
          4: Poison
          5: Forward Potion
          6: Poison
          7: Wine

          нехорош?
            0
            «Which one will get you back through the purple flames?»
            Hermione pointed at a rounded bottle at the right end of the line.

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

              написать
              Если учесть разгадку, которая написана в книге

              Весь интерес ведь не в том, как Гермиона загадку решила, а самому найти максимально точное решение.
              –1
              Не учитывает размера бутылок.
              Яд, по условиям, не в большой и не в маленькой, и 2 и 6 должны быть разными по размеру.
              Т.е. хотя одна из них будет большая или маленькая — противоречие.
            –1
            Есть ли что-то общее у всех решаемых вариантов загадки? Да! Обратите внимание, что в них самая маленькая или самая большая бутылки стоят на 2-м или 6-м местах.

            Хмм… так вот ведь, в решениях предпоследнего варианта встречаются решения, где и 2 и 6 — бутылки среднего размера? Или я что-то не так в утверждении понял?

            P.S. Если честно, не понял, почему решение отталкивалось именно от самой маленькой и самой большой бутылки. Ведь кроме того, что в них не яд, этот пункт больше ни с чем из текста не связан. В книге — да, Гарри и Гермиона кроме текста видели и бутылочки и это давало доп.информацию. А если использовать только текст загадки, то этот пункт бесполезен.

            P.P.S. Мозговой штурм с карандашом и листочком дал 7 возможных вариантов:
            1. Яд, Вино, Зелье-вперёд, Яд, Яд, Вино, Зелье-назад.
            2. Яд, Вино, Яд, Зелье-вперёд, Яд, Вино, Зелье-назад.
            3. Яд, Яд, Вино, Зелье-вперёд, Зелье-назад, Яд, Вино.
            4. Яд, Яд, Вино, Зелье-назад, Зелье-вперёд, Яд, Вино.
            5. Зелье-назад, Яд, Яд, Вино, Зелье-вперёд, Яд, Вино.
            6. Зелье-назад, Яд, Вино, Яд, Зелье-вперёд, Яд, Вино.
            7. Зелье-назад, Яд, Зелье-вперёд, Яд, Вино, Яд, Вино.
              –1
              Перечитайте условия. Первая и последняя бутылка немогут пустить вас вперед
                0
                Аа блин я неправильно понял вашу запись. Принуошу извинения.
                0
                Вроде как пропустили вариант
                Зелье-назад, Яд, Вино, Зелье-вперёд, Яд, Яд, Вино.
                  0
                  Да, точно, спасибо за поправку
                +2
                Всё оттого, что местоположения «меньшего» и «большего» зелий не указаны.

                Хотя сами герои то видят. Так нечестно :)

                  0
                  и всё равно я бы во все ливанул Быстродействующего снотворного…
                    +1
                    Есть ещё пятое ограничение.
                    5. Задачка должна быть решаема.
                    То есть, варианты расстановки маленькой и большой бутыли, допускающие несколько решений, автор ловушки не мог использовать (он ведь специально дал подсказки, чтобы маг с логикой не отравился и смог выйти из комнаты). Значит, изо всех вариантов расстановки, удовлетворяющих первым четырем условиям, остается только восемь, допускающих единственное решение. И во всех зелье возврата крайнее правое. А вариантов, в которых зелье движения вперед в самой маленькой бутыли — четыре. Мы не можем сказать, какой из вариантов был в комнате, но самая маленькая бутыль была третьей или четвертой слева.
                    Возможно, только один из этих четырех вариантов допускает простое и элегантное решение. Тогда можно было бы сформулировать шестое условие:
                    6. Решение задачи должно быть элегантным.
                      0
                      Всегда его найдёшь ты налево от вина,

                      Условие тоже читается двусмысленно, особенно с учётом того, что бутылок вина меньше чем бутылок с ядом. Возможно, имеется в виду, что ни одна из бутылок с ядом не находится по правую сторону от любой бутылки с вином.
                        +1
                        You will always find some on nettle wine’s left side
                        Английский вариант не позволяет такого толкования, там «Всегда найдёшь сколько-то яда возле левого бока бутылки с вином».
                        0
                        Четвертое условие вроде как ничего не дает.
                        Если не принимать его во внимание получается 8 вариантов:
                        f0_,f1_,f2_,f3_,f4_,f5_,f6_
                        Poison,Poison,Null,Forward,Back,Poison,Null
                        Poison,Poison,Null,Back,Forward,Poison,Null
                        Poison,Null,Poison,Forward,Poison,Null,Back
                        Poison,Null,Forward,Poison,Poison,Null,Back
                        Back,Poison,Poison,Null,Forward,Poison,Null
                        Back,Poison,Null,Poison,Forward,Poison,Null
                        Back,Poison,Null,Forward,Poison,Poison,Null
                        Back,Poison,Forward,Poison,Null,Poison,Null
                        Перебрал все варианты используя SQL.
                          0
                          В процессе решения задачи без подручных материалов пришел единственно правильному выводу
                          Правильный вывод
                          Я не Гермиона
                            0
                            Когда я писал первый комментарий, я подзабыл что моя карма подгорела. Пришлось ждать модерации.

                            После модерации я уже собрался писать этот коммент, но тут взгляд упал на строчку "Секундочку, а откуда взялось 42 варианта?"
                            С самого начала, как я ознакомился с условиями, меня не покидало ощущение чего то знакомого. Судоку. Но обо всем по порядку.

                            Решение, которое ожидало модерации.
                            Лирическое отступление
                            В общем, теоретически, можно напрячься и в уме найти 6 вариантов, 2 менее очевидных из решения inkpot я пропустил поначалу. Но вот примерить ко всему этому варианты размеров в уме у меня точно не получится.

                            Решение
                            Поскольку размер нам недоступен я все свел к 4м числам 0,1,2,3. Так как изначально пытался найти решение в уме, нужно было что-то, что просто запомнить.
                            0- назад 1- вперед 2-пустышка, 3-перебор(отрава), 2 встречается дважды, 3 — трижды, 1 не может быть вначале и в конце, также есть 2 группы «32» и одно условие проверки позиций 2.6. И вот со всем этим минут 15 смотрел на правила в начале поста. После чего сдался и открыл блокнот чтобы записать все к чему пришел.
                            С учетом того, что Гермиона указывает зелье назад «справа», то остается 2 варианта. Следуя дальнейшему описанию можно сделать вывод что маленькая будылка на позиции 3 или 4, соответственно на позиции 4 или 3 нет большой бутылки. Позиция большой бутылки одна из: 2,6,7. То есть даже с описанием выбора Гермионы нельзя ни сделать правильный выбор чтобы пройти вперед, ни однозначно определить позиции большой и маленькой бутылок.

                            32**32* == шаблон аля Судоку
                            3231320 /1
                            3213320 /2

                            032**32 ==
                            0323132 /3
                            0321332 /4

                            332**32 ==
                            3321032 /5
                            3320132 /6

                            0332132 /7-
                            0313232 /8-

                            Через слеш нумерация, с минусом — подсмотренные в комментах варианты.
                            Попытка определить размер
                            Возьмем пронумерованные от 1 до 7 бутылки, это наше представление размера.
                            Да, их можно расставить в ряду 42мя вариантами. И в каждом из этих вариантов можно налить в вторую и шестую в ряду зеленый тархун или красное вино. Это уже 84 варианта. Ну и так далее. Исходя из условий задачи мы имеем 8 рядов где в каждом есть 4 позиции куда можно поставить одну большую (1) и одну маленькую (0) бутылки.
                            ****
                            01**
                            0*1*
                            и так далее, всего 10. Итого, с учетом всех условий, 80 вариантов. Со слов Гермионы 6*10 вариантов можно убрать сразу. С учетом позиции маленькой бутылочки получаем:
                            Х? ХоХ?? или
                            Х? оХХ?? что дает в сумме 6 вариантов расположения большой и малой бутылочек.

                            Вывод. Решения, даже с учетом подсказок Гермионы, нет. Есть 6 вариантов. Из них гарантированно можно вернуться назад или просто попить вина
                            P.S.
                            Уже после отправки комментария, обратил внимание что речь в заголовке о версиях загадки.Строились они на основе размера. Определенный смысл в этом конечно есть. Найти все возможные решения, когда размеры не известны. Для меня же это была просто задачка отвлечься на работе с дополнительным условием, ведь у Гермионы не было с собой лаптопа ;)

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

                          Самое читаемое