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

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

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

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

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

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

Условия:

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

Обложка:

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

Корректор:

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

Вёрстка:

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

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

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

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

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

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

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

easy
Реально сложные задачи
Реально сложные задачи

Очень сложные задачи и сложные математические примеры. Без шуток, мы предупредили.

hard
Задача про хакатон и программистов, которые знакомы друг с другом
Задача про хакатон и программистов, которые знакомы друг с другом

В этой задаче запутаются все.

easy
Задача, в которой потребуется вся ваша логика
Задача, в которой потребуется вся ваша логика

Олимпиадная задача про шляпы

hard
Школьная загадка про сейф, которая ставит в тупик большинство взрослых
Школьная загадка про сейф, которая ставит в тупик большинство взрослых

Но не программистов.

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

Проверьте себя

easy
Находчивый инженер в кафе
Находчивый инженер в кафе

Как логика побеждает разгильдяйство.

medium
medium