Задача: баг или фича?
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 часов.

Обложка:

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

Корректор:

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

Вёрстка:

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

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

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

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

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

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

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

easy
Задачка: тревелблогеры на самолёте
Задачка: тревелблогеры на самолёте

Как им облететь вокруг Земли?

hard
Задача про программистов и угощение в баре
Задача про программистов и угощение в баре

Почувствуйте себя барменом

easy
Задача про хакатон и неразбериху с местами
Задача про хакатон и неразбериху с местами

То густо, то пусто

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

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

medium
Как в офисе обойти всех программистов по одному разу
Как в офисе обойти всех программистов по одному разу

Задача на логику и математику

hard
Задача про команду программистов, тимлида и таск-трекер
Задача про команду программистов, тимлида и таск-трекер

Описание простое, а задачка — нет

easy
easy