hard

Задача про Катю и двух программистов

Немного о том, как знакомятся программисты.

Два джуна, Аркадий и Борис, только что познакомились с Катей и спрашивают, когда у неё день рождения. Катя — технический директор и не любит отвечать прямо, поэтому предложила им десять возможных дат:

  • 15 мая,
  • 16 мая,
  • 19 мая,
  • 17 июня,
  • 18 июня,
  • 14 июля,
  • 16 июля,
  • 14 августа,
  • 15 августа,
  • 17 августа.

Затем она сказала Аркадию месяц своего рождения, а Борису — день. После этого состоялся диалог:

Аркадий: Я не знаю, когда у Кати день рождения, но я знаю, что Борис тоже не знает.

Борис: Хе-хе, сначала я тоже не знал, когда у неё день рождения, но теперь знаю.

Аркадий: А, ну теперь и я знаю.

Борис: Само собой.

Как они снова это сделали?

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

Здесь нет никакой магии — чистая логика. Разберём диалог по репликам.

Аркадий: я не знаю, когда у Кати день рождения, но я знаю, что Борис тоже не знает

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

Если бы Катя назвала Борису 18-е или 19-е число, Борис бы сразу понял, что это 19 мая или 18 июня, потому что эти числа встречаются только один раз. Но Аркадий мог гарантировать, что Борис не знает точной даты, только в одном случае — если бы день рождения был в июле или в августе. Иначе есть риск, что Борису назвали 19-е число из мая или 18-е из июня.

Получается, что это не может быть май или июнь, иначе нет стопроцентной гарантии, что Борису не назовут 18-е или 19-е число. Остаются июль и август.

Борис: хе-хе, сначала я тоже не знал, когда у неё день рождения, но теперь знаю

На этом моменте у нас остались такие даты: 14 июля, 14 августа, 16 июля, 15 августа, 17 августа. Борис понял, что Аркадий исключил май и июнь, и это дало ему нужную подсказку по месяцу. Получается, что это было точно не 14 число, потому что оно встречается по одному разу в каждом оставшемся месяце, и ответ Аркадия бы ничего Борису не дал.

Остаются 16 июля, 15 августа и 17 августа. Именно среди них и есть день рождения Кати, месяц которого Борис однозначно определил по числу. Мы с вами пока его ещё не знаем, но Борис в этот момент его уже вычислил.

Аркадий: А, ну теперь и я знаю

После ответа Бориса Аркадий понял, что Борис оставил себе эти три даты и по числу догадался о месяце. Нам же вместе с Аркадием нужно сделать наоборот — по месяцу догадаться о числе.

16 июля, 15 августа, 17 августа.

По условию, Аркадий знает месяц, и раз он после ответа Бориса догадался о точной дате, то это был июль. Дело в том, что если бы Аркадию назвали август, то он бы не смог однозначно выбрать, 15 или 17 августа отмечается день рождения. А раз так, то остаётся июль, а единственное оставшееся число в июле — 16-е.

Получается, что день рождения Кати — 16 июля, а Борис и Аркадий снова получают приз за самые странные диалоги.

Но пошла ли она с кем-то из них на свидание?

Стоит ли вам работать в ИТ? Проверьте бесплатно
В «Яндекс Практикуме» есть бесплатные короткие курсы. Пройдите их, чтобы понять, нравится ли вам это дело. Там много всего: от Git и Excel до разработки на Python и облачных технологий.
Попробовать бесплатно
Стоит ли вам работать в ИТ? Проверьте бесплатно Стоит ли вам работать в ИТ? Проверьте бесплатно Стоит ли вам работать в ИТ? Проверьте бесплатно Стоит ли вам работать в ИТ? Проверьте бесплатно
Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
hard