Инженерная задачка для программистов

Как запрограммировать датчик для вращающегося диска?

Инженерная задачка для программистов

Очередная задача на нестандартное мышление и логику. 

Внутри одного сложного механизма вращается диск — в одну или другую сторону. 

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

Условия:

  • Краски можно нанести сколько угодно, это не повлияет на работу диска.
  • Краски смешивать нельзя. Из белой и чёрной краски нельзя сделать серую.
  • Датчик не срабатывает, если краска не нанесена.
  • Мы не можем замерить скорость вращения диска или время показа чёрной или белой краски.
  • Датчик видит только последовательность из чёрного (Ч) и белого (Б) цветов, например ЧБЧБ.
  • На смену и появления цвета датчик реагирует моментально при любой скорости вращения.

👉 Как нам покрасить диск, чтобы в любой момент по последовательности чёрных и белых цветов мы могли определить направление вращения? 

Первая мысль — поделить диск на сектора и по очереди их закрасить в чёрные и белые цвета:

Задача на логику для программистов

Но при такой раскраске мы не сможем определить, в какую сторону вращается диск, потому что у нас всегда будет такая последовательность:

ЧБЧБЧБЧБЧБЧБЧБЧБЧБЧ…

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

Задача на логику для программистов

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

ЧБЧБЧБЧБЧБЧБЧБЧБЧБЧБ…

❗️ А теперь подключаем изобретательность

Наш датчик не реагирует, если диск не покрашен. По логике, как только диск начинает быть покрашенным, датчик начинает реагировать. То есть мы получим новую информацию в двух случаях:

 

  • Был один цвет, начался другой.
  • Не было никакого цвета, появился какой-то цвет.

Это значит, что у нас есть новый способ измерять вращение диска — через «отсутствие цвета» и повтор одного и того же цвета. Если не закрашивать часть диска, то датчик такие части измерять не будет, а заново среагирует на новое появление чёрного или белого цвета.

Получается, что наша задача — придумать такую последовательность из Ч и Б, которая в разные стороны читается по-разному.

Самая простая последовательность, которая подходит под эти условия — ЧЧБЧББ. При долгом измерении получим такое:

ЧЧБЧББЧЧБЧББЧЧБЧББ

А при вращении в обратную сторону последовательность превратится в ББЧБЧЧ и при долгом измерении станет такой:

ББЧБЧЧББЧБЧЧББЧБЧЧ

Даже если её повторить много раз, мы не найдём в ней первую последовательность ЧЧБЧББ. Значит, задача программиста — замерить хотя бы 12 символов, поместить их в массив и найти в нём одну или вторую базовую последовательность. 

Осталось нарисовать это на диске:

Задача на логику для программистов

Обложка:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Маша Климентьева

Вам может быть интересно
9 простых задач на математику
9 простых задач на математику

Всё настолько просто, что половину можно решить в уме.

easy
Андрюха, у нас логика! Возможно, криминал
Андрюха, у нас логика! Возможно, криминал

Логическая задача о преступности.

easy
Задача про находчивого альпиниста
Задача про находчивого альпиниста

Как спастись от укуса змеи, если все противоядия — одинаковые.

easy
Задача про банковскую комиссию
Задача про банковскую комиссию

Основано на реальных событиях

medium
Задача про полторы белки
Задача про полторы белки

Не спрашивайте, просто попробуйте решить.

easy
Интересная задача про велосипеды, которую можно решить намного быстрее, чем кажется
Интересная задача про велосипеды, которую можно решить намного быстрее, чем кажется

Справитесь за 30 секунд?

easy
Лучшие задачи на аналитику и вероятности
Лучшие задачи на аналитику и вероятности

Вероятно, это лучшие аналитические задачи

medium
Как найти кота?
Как найти кота?

Есть 5 коробок и в одной из них он сидит.

easy
Инженерная задачка для программистов
Инженерная задачка для программистов

Как запрограммировать датчик для вращающегося диска?

medium
medium