Совместно с компанией Yota мы предлагаем нашим читателям попробовать свои силы в Конкурсе созидательного интеллекта (КСИ). Условия такие: раз в неделю мы публикуем очередную задачу, а вы пробуете ее решить, и если у вас все получается, то можете записываться для участия в КСИ. Наши задачи не идут в зачет конкурса этого года, но они предлагались в конкурсе ранее и показывают уровень его сложности.

Общий призовой фонд КСИ составляет 1,5 миллиона долларов. Сначала конкурс проходит онлайн, потом участники с лучшими онлайн-результатами будут приглашены на офлайн-мероприятия, по результатам которых стратегические партнеры конкурса выберут победителей и присудят призовые места.

Компании-организаторы и их партнеры устраивают и поддерживают КСИ для того, чтобы найти себе перспективные, умеющие думать и решать сложные задачи кадры, прежде всего (пусть и не сразу) на ключевые позиции своего бизнеса.

Вот условия третьей задачи:

Вы вышли в финал шоу «Форт Боярд», и, чтобы достать сокровища, вам осталось пройти последнее испытание. На сей раз золото спрятано в сейфе под водой.

Чтобы открыть сейф, надо, управляя подводным роботом, набрать код из четырех символов и повернуть ручку сейфа на 180 градусов по часовой стрелке. Код набирается с помощью вращающихся дисков, на каждом из которых находятся цифры от 0 до 9, равномерно расположенные вдоль окружности диска в направлении против часовой стрелки.

Положение каждого диска определяется засечкой, нанесенной на корпусе сейфа в направлении 36 градусов по часовой стрелке относительно вертикали для первого и второго диска и 36 градусов против часовой стрелки относительно вертикали для третьего и четвертого дисков. Ручка сейфа находится между вторым и третьим дисками.

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

У робота всего четыре команды:
  1. передвинуть руку-манипулятор на одну позицию влево (если рука-манипулятор уже находится возле самого левого диска, то она не сдвигается);
  2. передвинуть руку-манипулятор на одну позицию вправо (если рука-манипулятор уже находится возле самого правого диска, то она не сдвигается);
  3. повернуть диск или ручку по часовой стрелке на одну позицию (изменение цифры на 1);
  4. повернуть диск или ручку против часовой стрелки на одну позицию (изменение цифры на 1).
Из предыдущих испытаний в ходе шоу вы узнали, что сейчас диски на сейфе установлены следующим образом: 8 2 5 5, а кодовая комбинация равна: 1 2 2 9. Однако вы провалили последний тест и не смогли узнать, возле какого диска сейчас находится рука-манипулятор.

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

Итак, ваша задача: подать роботу последовательность команд, которая гарантированно откроет сейф. При этом требуется, чтобы такая последовательность команд имела минимально возможную длину, то есть чтобы робот совершил минимальное число манипуляций — в противном случае он может выйти из строя раньше, чем выполнит все команды, и тогда сокровищ вам не видать!

Успеха в погоне за сокровищами!

Тем временем пришла пора показать вам правильные ответы на две наши предыдущие задачи. Первая из них касалась квадратуры шахматной доски. Вот как она решается.

Чтобы найти, сколько квадратов насчитывается на шахматной доске со сторонами n*n, необходимо просуммировать квадраты чисел от 1 до n по формуле:

S_n = n(n+1)(2n+1)/6

Итого для доски со сторонами 4*4 получаем 30 квадратов, для доски 8*8 — 204 квадрата, для доски 10*10 — 385 квадратов. Как вы догадались, эта задача полностью эквивалентна задаче о полном числе шаров, сложенных пирамидой с квадратным основанием.

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

Чтобы найти минимальную емкость аккумулятора, которая позволит всей семье перебраться на другой берег, прежде всего необходимо установить, сколько понадобится поездок через реку (как мы помним, согласно условию задачи, вся семья сразу в лодке поместиться не может). Так как лодка берет либо одного взрослого, либо двух детей, получаем следующий порядок поездок:

1) туда плывут двое детей
2) обратно — один ребенок (на том берегу остается один ребенок)
3) туда плывет один взрослый (на том берегу — ребенок и взрослый)
4) обратно плывет ребенок (на том берегу — один взрослый)
5) туда плывут двое детей (на том берегу — один взрослый и двое детей)
6) обратно плывет один ребенок (на том берегу один взрослый и один ребенок)
7) туда плывет второй взрослый (на том берегу — двое взрослых и один ребенок)
8) обратно плывет ребенок (на том берегу — двое взрослых)
9) туда плывут двое детей — на том берегу собирается вся семья, двое взрослых и двое детей.

Итого девять поездок. Для того чтобы рассчитать (разумеется, пренебрегая несущественными деталями) минимальную емкость аккумулятора, измеряемую в ампер-часах, надо умножить силу потребляемого тока на количество поездок (n) и на время одной поездки (t). Сила тока рассчитывается как мощность мотора (P) деленная на напряжение аккумулятора (V). Получаем формулу и подставляем в нее данные из задачи:

C = (P/V)*n*t = (500/30)*9*(1/3) = 50 ампер-часов, что представляет из себя вполне обычную емкость аккумулятора.

Следующую, четвертую задачу, мы опубликуем ровно через неделю. Тогда же мы выложим и правильный ответ на задачу про «Форт Баярд» и подводного робота. Ну а если наши задачи кажутся вам чересчур легкими, вы можете зарегистрироваться для участия в Конкурсе созидательного интеллекта уже сейчас.

Да, и еще. Двадцать шестого ноября состоится мероприятие Конкурса — Дружина №4, на котором все конкурсанты смогут лично пообщаться с организатором КСИ Андреем Морозовым и генеральным директором Yota Владимир Добрынин.


Нашли опечатку? Выделите фрагмент и нажмите Ctrl+Enter.