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

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

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

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

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

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

Условия:

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

Обложка:

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

Корректор:

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

Вёрстка:

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

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

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

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

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

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

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

easy
Задача про необязательного программиста

Как потратить всё, что заработал.

easy
Сложная задача про поросёнка и NFT

Вы не сможете решить её правильно

easy
Задача про 25 скриптов и скорость

Определяем лидеров на глаз

easy
Сборник простых задач по математике, которые кажутся сложными

Или наоборот

hard
Задачка от Джеффа Безоса. На размышление даётся 30 секунд

Считается, что её могут дать на собеседовании в «Амазон».

hard
Задача про программиста и сто дверей

Обойди их все

easy
medium
[anycomment]
Exit mobile version