Когда я впервые услышал правила сбора ягод на полянке‚ я задался вопросом⁚ а сколько же ягод я смогу собрать? Чтобы найти ответ на этот вопрос‚ я создал функцию harvest.
Описание функции
Функция harvest принимает на вход массив типов ягод и возвращает максимальное количество собранных ягод. В данной задаче тип ягоды представлен просто целым числом.
Алгоритм решения
Для решения этой задачи я использую следующий алгоритм⁚
- Создаю переменную count и инициализирую ее значением 0.
- Создаю переменную prev_count и инициализирую ее значением 0.
- Создаю переменную prev_fruit и инициализирую ее значением -1. Это значение будет использоваться для проверки‚ является ли текущая ягода соседней с предыдущей.
- Прохожу по всем элементам массива ягод.
- Если текущая ягода равна prev_fruit‚ увеличиваю prev_count на 1.
- Иначе‚ если prev_fruit не равно -1 (то есть это не первая ягода)‚ и prev_count больше или равно 3‚ добавляю prev_count к count‚ так как это максимальное количество ягод‚ которое можно добавить.
- Обновляю значения prev_count и prev_fruit согласно текущей ягоде.
- После окончания цикла проверяю‚ если prev_count больше или равно 3‚ добавляю prev_count к count.
- Возвращаю значение count как результат выполнения функции.
Реализация на языке Python
python
def harvest(arr⁚ list) -> int⁚
count 0
prev_count 0
prev_fruit -1
for fruit in arr⁚
if fruit prev_fruit⁚
prev_count 1
elif prev_fruit ! -1 and prev_count > 3⁚
count prev_count
prev_count 1
else⁚
prev_count 1
prev_fruit fruit
if prev_count > 3⁚
count prev_count
return count
Пример использования
python
harvest([1‚ 3‚ 3‚ 2‚ 2‚ 2]) # Вернет 5‚ так как мы можем собрать одну группу из трех ягод и еще одну группу из двух ягод
Теперь я знаю‚ сколько ягод я могу собрать на полянке согласно правилам. Эта функция помогла мне определить максимальное количество ягод‚ которые можно собрать.