Найти в Дзене
Журнал «Код»

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

Оглавление

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

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

  • 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 июля, а Борис и Арка­дий сно­ва полу­ча­ют приз за самые стран­ные диа­ло­ги.

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

Подписывайтесь на наш канал, чтобы всё складывалось