medium

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

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

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

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

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

Условия:

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

easy
Откуда взялась лишняя долька шоколада?
Откуда взялась лишняя долька шоколада?

Задача про то, как незаметно съесть кусочек шоколада

medium
Задача: как успеть на презентацию

Мы собрали всех IT-знаменитостей вместе, чтобы выяснить, как они ведут себя в темноте.

easy
Откуда взялась тысяча?

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

easy
Как перевезти гопников и философов с одного берега на другой
Как перевезти гопников и философов с одного берега на другой

Олимпиадная задачка для старшеклассников. Но справитесь ли с ней вы?

easy
Задача про тест на собеседовании
Задача про тест на собеседовании

Пришёл программист на собеседование, и началось.

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

Как сложить 120 чисел за пару минут

medium
medium