Сумеете подобрать пароль? Задача на логику!

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

Условия задачи

Исходные данные:

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

Вопрос:

Хватит ли трех попыток, чтобы правильно соотнести пароли с сервисами?

Решение задачи

Введение обозначений

Для удобства введем следующие обозначения:

  • Пароли будем обозначать буквами: А, Б, В.
  • Сервисы назовем Сайт1, Сайт2, Сайт3.

Первая попытка

Входим на Сайт1 и вводим пароль А.

  • Если пароль подошел, значит, у нас остаются два сайта и два пароля (Б и В), и две оставшиеся попытки, что достаточно для определения правильных паролей к оставшимся сайтам.
  • Если пароль не подошел, делаем вывод, что пароль А подходит к Сайту2 или Сайту3. Запоминаем этот вывод и продолжаем.

Вторая попытка

Открываем снова Сайт1 и пытаемся авторизоваться с паролем Б.

  • Если пароль подошел, то третьей попыткой заходим на Сайт2 с паролем А.
  • Если получилось, то оставшийся пароль В подходит к Сайту3.
  • Если не получилось, то пароль В подходит к Сайту2, а А – к Сайту3.

Третья попытка

Если же вторая попытка показала, что пароль Б не подходит к Сайту1, делаем вывод, что пароль В подходит к Сайту1.

  • Заходим на Сайт2 с паролем А:
  • Если получилось, то пароль Б подходит к Сайту3.
  • Если не получилось, то пароль Б подходит к Сайту2, а А – к Сайту3.

Таким образом, вне зависимости от результата третьей попытки, мы поймем расстановку паролей.

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