Если самая сложная задача в мире вам оказалась не по зубам, у нас есть вариант попроще. В нём только один вопрос и нужно найти всего один ответ. Попробуйте подумать над задачей несколько минут, прежде чем открывать решение.
Задачка:
В одном IT-стартапе работал джуниор-программист. Он постоянно требовал у начальства повышения, и в один из дней директор не выдержал и сказал, что у него есть для джуниора загадка. Если он её решит — получит повышение, а если нет — его назначат на самый скучный, самый мерзкий, самый нелюбимый проект компании.
Джуниор согласился, и тогда директор ему сказал:
- В моём кабинете тебя ждут два моих заместителя,
- на столе лежат два конверта — синий и красный.
- В одном из них приказ о твоём повышении,
- в другом — о переводе на мерзкий проект.
- Заместители знают, что в каком конверте,
- ты можешь любому из них задать только один вопрос.
- Один из заместителей тебе скажет правду,
- другой соврёт,
- кто именно — я тебе не скажу.
Джуниор подумал, задал свой вопрос и вытащил конверт с повышением. Что он спросил?
Выпишем все условия и ограничения, которые у нас есть:
- можно задать ровно один вопрос;
- его можно задать только одному заместителю, любому на наш выбор;
- один зам всё время врёт, второй говорит правду;
- мы не знаем, кто из них кто;
- они точно знают, в каком конверте лежит приказ о повышении.
Получается, что их ответ должен точно указать нам, что в каком конверте лежит. Но так как мы не знаем, кто говорит правду, а кто нет, то выходит, что оба заместителя должны дать нам один и тот же ответ.
Мы не можем спрашивать у заместителей про них самих, потому что не знаем, правдивый будет ответ или нет, но мы можем это использовать, если спросим у них что-то про соседа. Самый логичный вопрос, который можно задать любому из них, звучит так: «Другой заместитель говорит правду?»
Если мы спросим это у правдивого зама, то получим в ответ «Нет». Если мы спросим это у зама-лжеца, то он нам соврёт и тоже ответит «Нет». Получается, что кому бы мы ни задали этот вопрос, нам дадут один и тот же ответ, а значит, наша догадка про вопрос о соседе верна.
Нам нужно узнать, в каком конверте лежит приказ о повышении, поэтому вопрос будет звучать так: «Если я спрошу у другого заместителя, в каком конверте лежит приказ о повышении, на какой конверт он покажет?» Допустим, приказ в синем конверте, и тогда ответы будут такими:
- Правдивый зам знает, что второй точно соврёт и вместо синего скажет про красный, поэтому правдивый зам даст ответ «На красный».
- Лживый зам знает, что первый точно скажет правду про синий конверт, но так как он всё время врёт, то ответит «На красный».
Получается, что в обоих случаях замы укажут нам на тот конверт, где повышения нет, а значит, нам нужно задать этот вопрос, получить ответ и выбрать другой конверт.