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

в рабо­те у про­грам­ми­ста есть про­ект, в кото­ром нуж­но пофик­сить три бага и доба­вить три фичи. за час про­грам­мист может пофик­сить 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 часов.

нвчббисмт нвчббисмт    2   06.12.2019 13:14    0

Другие вопросы по теме Информатика