Обложка: Придумываем дюжину новейших задач для собеседований в IT-компаниях

Придумываем дюжину новейших задач для собеседований в IT-компаниях

Александр Клименков
Александр Клименков

ведущий технический писатель Bercut

Знаете, какой самый эффективный способ на время остановить работу целого отдела в IT-компании или научном коллективе? Подкинуть сотрудникам интересную, незнакомую математическую или логическую задачку. А какой самый простой и распространённый способ оценить кандидата на должность программиста или аналитика в ходе короткого собеседования? Предложить ему интересную, незнакомую математическую или логическую задачку. Самая популярная статья на сайте Tproger за всё время его существования — материал под названием «123 задачи с IT-собеседований с разбором решений».

В сети, в книгах, в журналах мы все периодически встречаем задачи различного типа сложности. Задачи попроще — немного размять мозговые извилины или же посложнее — на многочасовое или даже многодневное обдумывание. Удовольствие от успешного решения какой-нибудь особенно непростой задачи, пожалуй, сравнимо с чувством, когда твоя сложная программа наконец заработала без ошибок и стала выдавать правильный результат. Подобные задачи — это своего рода тренажёр для мозга. Они позволяют отвлечься от трудовой рутины и поразмышлять над какой-нибудь нестандартной проблемой.

Работодатели давно взяли на заметку, что несложные логические или математические задачи — это хороший способ проверить сообразительность, знание законов логики и умение рассуждать. Именно поэтому такие задачи называют «типовыми» для собеседований.

В статье «16 вопросов с собеседований, которые означают не то, что вы думаете» Елена Лыбина, руководитель отдела найма и адаптации Bercut, рассказывает:

Прежде всего скажу, что мы ведём открытую коммуникацию с кандидатами. У нас нет цели создать стрессовую ситуацию, кого-то на чём-то «поймать» или что-то выведать. Мы изучаем опыт и мотивацию кандидата в процессе свободной доброжелательной беседы и ловушек никому не устраиваем. Но для некоторых позиций, особенно Junior, в Bercut важна способность мыслить нестандартно. Это сложно определить в ходе стандартного интервью. Поэтому мы используем логические задачки. Нам интересен ход размышлений кандидата, и мы просим озвучивать его процесс решения. Иногда ход решения важнее правильного результата. А иногда способность решить простую логическую задачу является для нас показателем того, что кандидат может собраться и в стрессовой ситуации выдать быстрый результат. Если такие качества обязательны для позиции, на которую мы ищем кандидата, то задачка становится вопросом с подвохом.

В ноябре 2019 года Bercut выступил партнером конференции SECR (Software Engineering Conference Russia), где специалисты Bercut предложили посетителям выставки поучаствовать в квестах по решению задач. Хотя, с решением полного набора задач справилось всего несколько человек, сама викторина вызвала большой интерес .

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

В сети есть много сборников математических и логических задач. Проблема в том, что эти сборники читают не только работодатели, но и их потенциальные работники. Зачастую бывает так, что решение какой-нибудь интересной задачи уже известно многим. Так не годится, ведь нужно проверять не только способность хорошо запоминать прочитанное, но и умение решать новые, неизвестные кейсы. Да и вы, наверное, не захотите, чтобы вас снова спросили, как взвесить Боинг-747 или сколько будет 2 в степени 64. Правильные ответы на подобные популярные вопросы выучили наизусть даже офисные пальмы и фикусы в «переговорках», где проводятся собеседования. Нужно больше новых интересных задач.

О том, как составлять новые задачи, и написана эта статья. Давайте подойдём к этому вопросу творчески, но системно: попробуем придумать алгоритмы для создания новой задачи того или иного типа, а потом, воспользовавшись этими алгоритмами, составим абсолютно новые, ещё никому не известные задачи. Для каждого типа задач я буду приводить примеры уже известных — из журнала «Наука в фокусе», из книги Якова Перельмана «Занимательные задачи и опыты» и из других источников. Вообще, книги по математике и научно-популярные журналы (например, многие могут вспомнить журнал «Квант» для школьников, интересующихся математикой) — это неиссякаемые источники интересных задач.

Я опишу алгоритм сочинения новых задач для каждого типа и приведу примеры тех, которые составил, пользуясь этим алгоритмом. Думаю, задачи, приведённые в этой статье, покажутся вам не сложными. Главное — это понять принцип и разложить процесс на составляющие. А дальше — уже дело техники.

1. Задачи с конечным множеством чисел

Первый тип задач, о котором я хочу рассказать, про числа в реальном мире. Нас окружает множество устройств, предметов и объектов, на которых нарисованы или отображаются цифры. Это и часы, и календари, и номера машин. Обычно значение чисел или количество цифр в таких объектах конечно. Почему бы не сделать это предметом размышлений? Вот пример двух таких задач.

Задача о неточных часах

В доме трое часов. 1 января все они показывали верное время. Но верно идут только первые часы. Вторые отстают на 1 минуту в сутки. Третьи спешат на 1 минуту в сутки. Если часы будут продолжать так идти, через какое время все вместе будут снова показывать верное время?

Через 720 суток. За это время вторые часы отстанут на 720 минут, то есть ровно на 12 часов; третьи часы на столько же уйдут вперёд. Тогда все часы будут показывать то же, что и 1 января, то есть верное время.

Задача о годе рождения профессора

Профессор Кумле в 1971 году сообщил своим студентам: «Мне было n лет в n² году». В каком году родился профессор?

Профессор родился в 1892 году. В 1936 году ему было 44 года: 44²=1936.

Алгоритм составления задач с конечным множеством чисел:

  1. Берём любое распространённое устройство или объект, на котором отображаются или написаны цифры.
  2. Выбираем характерное, однозначно определяемое число из множества допустимых чисел, отображаемых на этом устройстве или объекте. Например, максимальное или минимальное возможное число. Также можно описать какую-то характерную комбинацию цифр.
  3. Просим назвать устройство, рассчитать количество комбинаций или определить какой-то вариант числа, обладающих характерными особенностями.

Давайте попробуем придумать такие задачи. Для начала возьмём какой-нибудь объект, опишем характерную особенность его чисел и попросим угадать, что это за объект.

Новая задача 1

В нём бывает разное количество чисел. Разница между минимальной и максимальной суммой чисел в нём равна 90. Его традиционно делят на части, в первой из которых бывает до четырёх простых чисел. Что это такое?

Это календарный месяц. Его делят на недели. Если первая неделя начинается с понедельника, то в ней четыре простых числа: 2, 3, 5 и 7. Минимальная сумма чисел в месяце — 406, максимальная — 496.

Теперь давайте попробуем придумать новую задачу про цифровые часы.

Новая задача 2

Винни-Пух посмотрел на свои цифровые часы: было 12:45. «Все цифры разные, самое время перекусить», — подумал он. Сколько раз за сутки Винни-Пуху можно перекусить? На цифровых часах Винни-Пуха отображаются четыре цифры — только часы и минуты.

Эту задачу можно решать разными способами. Один из самых очевидных — взять и всё посчитать.

Нам нужно перебрать все варианты, вроде 01:23. Конечно, при этом не нужно забывать, что количество минут не может быть больше 59, а количество часов не может быть больше 23.

Для начала посчитаем количество возможных вариантов для 10-минутного промежутка. Например: 01:23, 01:24, 01:25, 01:26, 01:27, 01:28, 01:29 — всего 7 штук. Это количество всегда будет постоянным, ведь смена одной цифры в часах «уберёт» некоторые варианты минут, но добавит столько же других вариантов. Например: 07:21, 07:23, 07:24, 07:25, 07:26, 07:28, 07:29. Или: 16:20, 16:23, 16:24, 16:25, 16:27, 16:28, 16:29.

Теперь посчитаем, сколько таких десятиминутных наборов будет в часе. Для нашей задачи их будет меньше 6:

  • Для часов от 01 до 05, от 10 до 15 и от 20 до 23 количество наборов — 4. Так получается, потому что мы должны исключить наборы, начинающиеся с каждой из двух цифр часов. Например, для 12 часов не будет наборов минут 10–19 и 20–29. Часы 00, 11 и 22 не рассматриваем — цифры в часах не могут повторяться. В итоге для всего этого множества имеем (5+5+3)×4×7=364 варианта.
  • Для часов от 06 до 09 и от 16 до 19 количество наборов — 5. В часе 60 минут, значит нужно исключить только 10 минут, начинающиеся с первой цифры часов — от 00 до 09 или от 10 до 19. Для всего этого множества имеем (4+4)×5×7=280 вариантов.

Всего в сумме имеем 364+280=644 варианта. Это значит, что Винни-Пуху за сутки можно перекусить 644 раза. Наверное, поэтому он такой упитанный.

Ещё один неиссякаемый источник задач — это телефонные номера. Для нас в Bercut это вообще «родная» тема, ведь большинство продуктов Bercut предназначены для автоматизации и решения различных бизнес-задач операторов мобильной связи.

Новая задача 3

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

При решении этой задачи можно начать вспоминать формулы комбинаторики, а можно выполнить всего одно простейшее арифметическое действие. Для начала давайте просто найдём максимальное число, которое можно получить суммируя все цифры семизначного номера: 9×7=63. Оказывается, это число на единицу больше счастливого числа клиента. Значит, в искомом телефонном номере все цифры будут девятками, кроме одной восьмёрки. Таких телефонных номеров всего 7 — по одному на каждую позицию восьмёрки в номере.

2. Задачи с поиском закономерностей в последовательностях

Следующий тип задач — на поиск закономерностей. Их великое множество и сочинить новый вариант совсем не сложно. Последовательность можно придумать самостоятельно или взять из реального мира. Приведу пару примеров ранее опубликованных задач этого типа.

Задача о первой загадочной последовательности

Каким будет сотый член в последовательности, которая начинается числами: 81, 73, 52, 42, 34, 22, 18, …?

Это будет число 10. Последовательность строится по следующему принципу: 81−(8×1)=73, 73−(7×3)=52 и далее до 18−(1×8)=10. Поскольку 10−(1×0)=10, это число повторяется бесконечно.

Задача о второй загадочной последовательности

Дана последовательность чисел: 11, 7, 5, 7, 7, 7. Продолжите последовательность ещё одним числом.

Эта последовательность, описывающая объект реального мира, а именно — дни недели. В ней перечислено количество букв в названиях дней недели: понедельник — 11, вторник — 7, среда — 5, четверг — 7, пятница — 7, суббота — 7. Следующий и последний день недели — воскресенье. Значит, в последовательность нужно добавить число 11.

Алгоритм составления задач с поиском закономерностей в последовательностях:

  1. Берём любую последовательность с чётко заданными правилами изменения элементов. Правила не обязательно должны быть связаны с математикой.
  2. Вносим в эту последовательность одно, и только одно, изменение. Этот шаг можно пропустить.
  3. Просим восстановить или продолжить последовательность.

Попробуем воспользоваться этим алгоритмом и сочинить новые задачи.

Новая задача 4

Математик Матвей, работая над диссертацией, задумчиво глядел в окно и считал ворон на крышах соседних домов. На первой крыше сидело 11 ворон, на второй — 16, на третьей — 7, на четвёртой — 21, на пятой вообще не было ворон, а на шестой сидело 34 вороны. «Глупые птицы», — подумал Матвей. За что Матвей критиковал ворон?

Количество ворон на крышах — это последовательность, каждый следующий член которой изменяется по сравнению с предыдущим на число Фибоначчи. Начальный член последовательности — 11, начальное число Фибоначчи — 5 (это сумма 2+3=5). При этом очередное число Фибоначчи то прибавляется, то вычитается из предыдущего члена последовательности. Получается такая закономерность:

  1. Начальный член последовательности: 11.
  2. Число Фибоначчи: 2+3=5. Действие — сложение. Член последовательности: 11+5=16.
  3. Число Фибоначчи: 3+5=8. Действие — вычитание. Член последовательности: 16−8=8.
  4. Число Фибоначчи: 5+8=13. Действие — сложение. Член последовательности: 8+13=21.
  5. Число Фибоначчи: 8+13=21. Действие — вычитание. Член последовательности: 21−21=0.
  6. Число Фибоначчи: 13+21=34. Действие — сложение. Член последовательности: 0+34=34.

Матвей критиковал ворон за то, что на третьей крыше по правилам последовательности должно сидеть 8, а не 7 ворон.

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

Новая задача 5

Финский программист Юкка, стоя в пробке, от нечего делать разглядывал номера встречных машин. Сначала проехала машина с номером 22-34, потом с номером 42-28, дальше были машины с номерами 34-50, 58-40 и 46-66. «Однако, тенденция», — подумал Юкка. Какой номер будет у следующей машины?

Последовательность номеров машин подчиняется трём правилам:

  1. Разница между числами в паре на каждом шаге увеличивается на 2: 12, 14, 16, 18, 20.
  2. Минимальное число в паре на каждом шаге увеличивается на 6: 22, 28, 34, 40, 46.
  3. На каждом шаге меньшее и большее число в паре меняются местами.

По этим правилам следующий номер будет такой: 74-52.

3. Задачи на элементарную логику

Логика — это важнейший инструмент любого человека интеллектуальной профессии. Самый простой способ проверить знание логики — это задачи с оценкой истинности утверждений. Вот пример одной такой задачи из теста на логическое мышление. Я немного перефразировал её условие.

Задача про пингвинов

Некоторые пингвины — птицы. Каждая птица имеет три крыла. Какое из следующих утверждений является истинным:

  1. Пингвины с двумя крыльями не являются птицами.
  2. Птицы, которые являются пингвинами, иногда имеют три крыла.
  3. Птицы с двумя крыльями иногда являются пингвинами.
  4. Пингвинов не птиц, с тремя крыльями не бывает.
  5. Пингвины имеют три крыла, потому что они птицы.
  6. Ни одно из вышеперечисленного.

Истинно только первое утверждение.

Алгоритм составления задач на элементарную логику

  1. Придумываем набор любых не очень сложных логических утверждений, задающих условия пересечения нескольких множеств.
  2. Заменяем объекты множеств другими объектами, делающими заданные утверждение абсурдным на уровне житейской логики.
  3. Придумываем ряд утверждений, которые с учётом заданных условий являются ложными. И одно или несколько утверждений, которые являются истинными.
  4. Просим указать истинные утверждения.

По такому алгоритму можно придумать огромное количество весёлых оригинальных задачек.

Новая задача 6

Коты знают информатику. Все коты любят музыку. Какое из следующих утверждений является истинным:

  1. Все, кто знают информатику, любят музыку.
  2. Информатику знают только коты.
  3. Коты, которые знают информатику, не любят музыку.
  4. Некоторые знатоки информатики любят музыку.
  5. Все знатоки информатики не любят музыку.
  6. Коты, которые любят музыку, не знают информатику.

Истинно только четвёртое утверждение.

Новая задача 7

Некоторые астрофизики любят апельсины. Все любители апельсинов живут на Кипре. Какие из следующих утверждений являются истинными:

  1. Все астрофизики живут на Кипре.
  2. Некоторые жители Кипра — астрофизики.
  3. Все жители Кипра любят апельсины.
  4. Все любители апельсинов — астрофизики.
  5. Некоторые астрофизики, которые не любят апельсины, могут жить на Кипре.
  6. Некоторые любители апельсинов могут жить не на Кипре.

Истинны только второе и пятое утверждения.

4. Задачи на выполнение расчётов и решение уравнений

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

Вот пример такой задачи.

Задача про кенгуру

В австралийском зоопарке 35% всех кенгуру серые. 13% всех животных зоопарка — кенгуру, но не серые. Сколько процентов от всех животных в зоопарке составляют кенгуру?

Введём обозначения:

  • a — общее количество животных в зоопарке;
  • s — количество серых кенгуру;
  • k — количество всех кенгуру.

Первое утверждение из задачи можно записать так: 0,35×k=s.

Второе утверждение из задачи можно записать так: 0,13×a=k−s. Или: 0,13×a=k−0,35×k.

Последовательно упростим это уравнение: 0,13×a=0,65×k.

Получаем a=5×k или k=1/5×a. То есть k составляет 20% от a. Значит, в зоопарке 20% животных — это кенгуру.

Вот ещё одна весьма любопытная задача.

Задача об основном вопросе Вселенной

Из книги «Автостопом по Галактике» мы знаем формулировку основного вопроса жизни, Вселенной и всего остального: «Что получится, если умножить шесть на девять?» Известен также и знаменитый ответ на этот вопрос — 42. В какой системе счисления этот ответ будет верным?

В тринадцатеричной системе счисления: 6×9=4×13+2.

Алгоритм составления задач на выполнение расчётов и решение уравнений

  1. Придумываем один или несколько ответов — целые числа.
  2. Составляем систему из одного или нескольких уравнений, решением которых будут числа, полученные на шаге 1, или выполняем ряд несложных математических или иных преобразований с этими числами. В итоге получаем коэффициенты уравнений или результаты математических преобразований.
  3. Придумываем историю, описывающую коэффициенты или результаты преобразований.
  4. Просим решить задачу, не упоминая при этом, что она связана с уравнением или преобразованиями.

Новая задача 8

Перед выпуском нового релиза системы два тестировщика — Фаддей и Фиона — проверили 100 тестов. Тестировщик Фаддей работал на 5 часов дольше Фионы и проверил на 10 тестов больше. Но Фиона работает быстрее Фаддея на 50%. Сколько времени работал каждый тестировщик?

Сначала найдём скорость работы Фаддея 10/5=2 теста в час. Фиона работает быстрее Фаддея на 50%, значит скорость её работы — 3 теста в час. Когда Фиона и Фаддей работали вместе, они проверили 100−10=90 тестов. Каждый час оба тестировщика проверяют 2+3=5 тестов. Разделим 90 на 5 и получим 18 часов — это время совместной работы Фионы и Фаддея. Но Фаддей работал дольше на 5 часов: 18+5=23 часа.

Фиона работала 18 часов, Фаддей — 23 часа.

Проверяем: 3×18+2×23=100.

Новая задача 9

В магазине электроники новая модель телефона сначала подорожала на 10%, а потом подешевела на 10%. После этого телефон стал стоить 93555 рублей. Сколько телефон стоил до подорожания?

После подорожания телефон стоил 110%, то есть 1,1 от первоначальной цены. После удешевления его цена будет равна: 1,1×0,9=0,99. То есть 99% процентов от начальной цены. Значит, до подорожания телефон стоил 93555/0,99=94500 рублей.

5. Задачи на поиск оптимального алгоритма действий

Этот тип, пожалуй, наиболее интересный. Это именно те задачи, которые гуляют по сети и знакомы почти всем: задача про три лампочки и три выключателя, задача про маляров и перчатки, задача про мост и фонарик. Приведу два давно известных примера.

Задача о варке яиц

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

Для простоты обозначим часы цифрами «7» и «11». Алгоритм будет такой:

  1. Кладём яйцо в воду, запускаем одновременно часы «7» и «11».
  2. Когда в часах «7» закончится песок, переворачиваем их. Всего прошло 7 минут.
  3. Когда в часах «11» закончится песок, переворачиваем часы «7». Всего прошло 11 минут. В часах «7» к этому времени собралось песка на 4 минуты. Когда мы перевернём часы «7», они начнут отмерять эти 4 минуты.
  4. Когда в часах «7» закончится песок, пройдёт 11+4=15 минут.

Задача об автоматах с мороженым

Перед вами три автомата с мороженым. Первый выдаёт ванильное мороженое, второй — шоколадное. Третий автомат действует случайно — выдаёт ванильное или шоколадное мороженое. Мороженое стоит одну монету. На всех трёх автоматах есть надписи: «Ванильное», «Шоколадное», «Случайное». Но надписи перепутаны — все три надписи неправильные. Сколько нужно потратить монет, чтобы выяснить, где какой автомат?

Понадобится всего одна монета! Алгоритм действий такой:

  1. Опускаем монету в автомат с надписью «Случайный». Автомат не может быть случайным. Получив мороженное мы узнаем, что это за автомат: с ванильным или шоколадным вкусом. Пусть это будет ванильное мороженое.
  2. Осталось два автомата с надписями «Ванильное» и «Шоколадное». Но автомат с ванильным мороженым мы уже нашли. Значит оставшиеся автоматы на самом деле выдают шоколадное и случайное мороженое.
  3. Помним, что все три надписи — неправильные. Значит автомат с надписью «Шоколадное» не может выдавать шоколадное мороженое. Это на самом деле автомат со случайным мороженым.
  4. Оставшийся автомат с надписью «Ванильное» на самом деле выдаёт шоколадное мороженое.

Алгоритм составления задач на поиск оптимального алгоритма действий:

  1. Придумываем систему, в которой есть несколько элементов с разными значениями одного и того же параметра. Например, время, вес или объём.
  2. Придумываем искусственные ограничения, накладываемые на систему.
  3. Придумываем показатель, который нужно минимизировать.
  4. Просим найти оптимальный алгоритм решения задачи.

Кстати, когда вы сочините задачу на поиск оптимального алгоритма действий, может так случиться, что вы и сами не будете знать лучший ответ на свою же задачу. Сами сочиняете, сами решаете — замечательное развлечение для субботнего вечера! При этом нет никакой гарантии, что вы найдёте самое оптимальное решение. Бывают такие задачи, над которыми можно размышлять неделями.

Следующие две задачи могут показаться вам достаточно простыми. Однако я столкнулся с некоторыми трудностями в процессе придумывания этих «творческих» задачек. С уточнением условий новой задачи под номером 10 мне помог один мой коллега — мудрый и рассудительный человек, тоже любящий разные логические задачи.

Новая задача 10

У бассейна в зоопарке отдыхают пять бегемотов. Бассейн полон воды и достаточно большой, чтобы в нём поместились все бегемоты разом. У вас нет никаких измерительных инструментов. Вы — главный начальник бегемотов и можете решать, кому из них что нужно сделать. Как найти самого толстого бегемота?

По сути это задача на нахождение максимального элемента в массиве массивных бегемотов. Погружаем в воду первого бегемота. Он вытеснит определённое количество воды. Воды в бассейне станет меньше. Пока считаем его самым толстым. Затем последовательно погружаем в воду по одному всех остальных бегемотов. Если какой-то из бегемотов снова заставит воду перелиться через край, значит он толще предыдущего лидера. Звание самого толстого бегемота переходит к нему. Так мы выясним, какой из бегемотов толще всех, и сможем наградить его кочаном вкусной капусты.

Новая задача 11

Жители одного тропического острова в Тихом океане приплыли к жителям другого острова на лодках. Гости привезли груз манго и хотят обменять его на такой же по объёму груз авокадо. Как им это сделать, если у островитян под рукой нет ни весов, ни линеек, ни других средств точного измерения? И ещё одно важное условие: верования туземцев не позволяют им рыть ямы.

А лодки на что? Эта задача чем-то похожа на предыдущую. Вытаскиваем лодку на берег, нагружаем в лодку манго, оставшийся объём лодки до краёв заливаем водой. Вынимаем из лодки манго и постепенно наполняем её авокадо до тех пор, пока вода снова не достигнет краёв лодки. Островитяне останутся довольны справедливым обменом.

Следующая задача уже посложнее.

Новая задача 12

На далёкую планету роботов «Железяка» прилетел грузовой транспорт с 230 литрами машинного масла на борту. На данный момент на планете проживает 5 роботов. Как за минимальное количество шагов поделить машинное масло поровну между роботами, если у них на планете остались только две канистры ёмкостью 17 и 21 литр?

Каждому роботу нужно отмерить 230/5=46 литра масла. Для начала отмерим первому роботу 21 литр из большой канистры. Недостающие 25 литров можно отмерить так:

  1. Наливаем в большую канистру 21 литр, затем переливаем из неё 17 литров в маленькую канистру. В большой канистре остаётся 21−17=4 литра.
  2. Отливаем 17 литров роботу из маленькой канистры.
  3. Переливаем 4 литра из большой в маленькую канистру.
  4. Снова наливаем в большую канистру 21 литр и доливаем из неё масло в маленькую канистру масло до краёв. В маленькой канистре уже есть 4 литра, значит из большой канистры туда перельётся 17−4=13 литров. В большой канистре останется 21−13=8 литров. Отливаем их роботу.

В результате этих шагов робот получит ещё 17+8=25 литров. Теперь мы можем перелить остаток из маленькой канистры обратно в большую и дополнить её до 21 литра, чтобы выдать их следующему роботу и повторить алгоритм.

В этой статье описаны только пять типов задач. Безусловно, их гораздо больше. Да и алгоритмы составления можно придумать гораздо более сложные и разветвлённые. Важен сам принцип сочинения: в обратном направлении — от готового решения к интересному и загадочному условию. Кстати, должен вам признаться, что автор этой статьи непосредственно в режиме собеседования может и не решил бы некоторые из приведённых здесь задач — как известных, так и новых. Но я уверен, что читатели умеют легко решать подобные задачки, как на собеседованиях, так и для развлечения!

Составление новых задач лично для меня оказалось даже интереснее их решения. Для новой задачи нужно не только придумать её математическую или логическую основу, но и изобрести вокруг неё свою историю и персонажей, чтобы её захотелось тут же решить. Вполне возможно, что при составлении новых задач вы почувствуете себя автором детективного жанра, который заранее знает ответ на загадку, но должен искусно скрыть этот ответ от читателя, выстраивая ловушки и ложные тупиковые линии. Если всё это сделать как следует, то получится по-настоящему интересная задача. Предлагаю вам заняться составлением и публикацией собственных задач — это не только полезное, но и очень захватывающее занятие. Пусть у нас будет больше новых интересных задач!

Тем, кто дочитал статью до конца — небольшой бонус: три задачки с реальных собеседований в Bercut.

Бонусная задача 1

Рядом с офисом Bercut стоят два дома. Высота каждого — 10 метров. Между ними с крыши на крышу перекинут телекоммуникационный кабель длиной 12 метров. Кабель прогибается под своей тяжестью и в месте максимального прогиба расстояние от кабеля до земли составляет 4 метра. Найдите расстояние между домами.

Бонусная задача 2

На одном этаже офиса Bercut есть сотрудники без мониторов, с одним монитором и с двумя мониторами. У всех вместе 100 мониторов. Сотрудников без монитора столько же, сколько сотрудников с двумя мониторами. Сколько всего сотрудников работает на этом этаже?

Бонусная задача 3

1,5 разработчика за 1,5 минуты пишут 1,5 строки кода. Сколько строк напишут 2 разработчика за 2 минуты?