easy

Задача: баг или фича?

Сколько времени потребуется программисту, чтобы запилить весь проект?

В работе у программиста есть проект, в котором нужно пофиксить три бага и добавить три фичи. За час программист может пофиксить 1–2 бага или добавить 1–2 фичи. Но он постоянно отвлекается на форумы и соцсети, поэтому каждый час работа идёт так:

  • Если он пофиксит один баг, то вылезут два новых.
  • Если он пофиксит за час сразу два бага, то в трекере появится задание сделать ещё одну новую фичу, и не факт, что она войдёт в финальный релиз.
  • Если он добавит одну фичу, то в трекере появится запись, что ему обязательно нужно добавить ещё одну фичу, но попроще, и без этого проект не сдать.
  • И только если он за час добавит сразу две фичи, то новых задач не прибавится.

Сколько минимально времени потребуется программисту, чтобы сдать проект без багов и с пустым трекером задач?

Единственное действие, при котором не появляется новых багов и фич — это когда программист за час добавляет сразу две фичи. Получается, что для успешного завершения нужно сделать чётное количество фич подряд — 2, 4, 6, 8 или что-то подобное.

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

Нечётное количество фич — это 1, 3, 5 и так далее. Если мы закроем сразу два бага, то это даст нам только одну новую фичу в трекере, и останется ещё один баг. Делаем это за первый час:

Исходные данные: 3 бага, 3 фичи.

Час 1: 1 баг, 4 фичи (пофиксили 2 бага, получили +1 фичу в трекере).

У нас появилось чётное количество фич, которые можно сразу попарно закрыть. Тратим ещё 2 часа.

Час 2: 1 баг, 2 фичи (реализовали сразу 2 фичи, новых заданий не появилось).

Час 3: 1 баг (реализовали сразу 2 фичи, новых заданий не появилось).

Уже хорошо. Теперь единственное, что остаётся программисту — отработать этот баг.

Час 4: 2 бага (пофиксили 1 баг, получили 2 новых).

А вот тут можно попасть в ловушку, если сразу пофиксить 2 бага и получить фичу. Дело в том, что если остаётся только одна фича, то после её выполнения в трекере появляется запись, что нужно сделать ещё одну. Получается бесконечный цикл. Значит, нам нужно фиксить по одному багу по очереди.

Час 5: 3 бага (пофиксили 1 баг, получили 2 новых).

Ага, у нас уже 3 бага, а это значит, что можно сделать одновременно 2 из них, и не попасть потом в замкнутый круг. Проверим.

Час 6: 1 баг, 1 фича (пофиксили 2 бага, получили +1 фичу в трекере).

Но мы уже встречали ситуацию, когда был только один баг, и знаем, как из него получить 2, а из двух — фичу. Делаем.

Час 7: 2 бага, 1 фича (пофиксили 1 баг, получили 2 новых).

Час 8: 2 фичи (пофиксили 2 бага, получили +1 фичу в трекере).

И снова появилось чётное количество фич, которые нужно сделать. Закрываем проект финальным шагом.

Час 9: всё сделано (реализовали сразу 2 фичи, новых заданий не появилось).

Ответ: программисту потребуется минимум 9 часов.

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

Эту задачу могут решить только люди с абстрактным мышлением

easy
Задача про безумного рекрутера и большой офис
Задача про безумного рекрутера и большой офис

Вот что бывает, когда начинаешь бесконтрольно нанимать людей, — внезапно заканчивается место в офисе.

easy
Как взорвать ракету одной переменной
Как взорвать ракету одной переменной

Краткий мастер-класс по правильному объявлению типов данных.

easy
Нестандартная задача про наши счастливые годы: 2020-й и 2021-й
Нестандартная задача про наши счастливые годы: 2020-й и 2021-й

С виду она очень простая, но это не так

medium
Школьная задача, которую дети решают без калькулятора, а взрослые — нет
Школьная задача, которую дети решают без калькулятора, а взрослые — нет

А вы сможете?

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

Вы справитесь, если подключите логику

medium
Два программиста и календарь
Два программиста и календарь

Как узнать количество дней в месяце только по его номеру?

hard
математическая задача про маршрутку
Сложная задача про маршрутку

Судьбоносное решение в ваших руках.

hard
Логическая задача
Задача имени Якубовича: три шкатулки с деньгами

Интуиция обманет вас в этой задаче. Попробуйте лучше теорию вероятностей, это легко.

hard
easy