Кодинг-марафон. Задача № 7.

Фермеру нужна ваша помощь, чтобы узнать количество животных, спрятанных в заданной строке txt.

У нас есть список названий животных:

animals = ["dog", "cat", "bat", "cock", "cow", "pig",
           "fox", "ant", "bird", "lion", "wolf", "deer", "bear",
           "frog", "hen", "mole", "duck", "goat"]

Напишите функцию, которая будет принимать строку txt и возвращать максимальное количество названий животных, которые возможно собрать из символов строки.

Пример

txt = "goatcode"
count_animals(txt) ➞ 2

# первое животное = "dog"
# оставшиеся символы в строке = "atcoe",
# второе животное = "cat".
# count = 2 (верно)

# если взять  сперва  "goat", 
# оставшиеся символы в строке = "code",
# т.е. больше нельзя составить имен животных
# count = 1 (неверно)

Еще примеры

count_animals("goatcode") ➞ 2
# "dog", "cat"

count_animals("cockdogwdufrbir") ➞ 4
# "cow", "duck", "frog", "bird"

count_animals("dogdogdogdogdog") ➞ 5

Решение

animals = ["dog", "cat", "bat", "cock", "cow", "pig",
           "fox", "ant", "bird", "lion", "wolf", "deer", "bear",
           "frog", "hen", "mole", "duck", "goat"]


def count_animals(txt):
    counts = []

    def f(t, c):
        for a in animals:
            s = t
            for x in a: s = s.replace(x, "", 1)
            if len(s) + len(a) == len(t): f(s, c + 1)
        counts.append(c)

    f(txt, 0)
    return max(counts)
Марина

Recent Posts

10 удалённых Python-вакансий

Если вы ищете работу на Python, на Talanto.work сейчас есть варианты для junior, middle, senior…

6 месяцев ago

Где искать Python-вакансии в 2026 году: зачем на Talanto.work появился отдельный сценарий поиска

Рынок Python-вакансий большой, но удобным его назвать сложно. Формально вакансий много, однако в реальном поиске…

6 месяцев ago

Срезы в Python со всеми подробностями

Срезы в Python — это больше, чем a[2:7]. В статье — быстрый разбор полезных приёмов:…

8 месяцев ago

Возведение в степень в Python: полное руководство

В этой статье мы рассмотрим возведение в степень в Python с помощью различных методов, от…

9 месяцев ago

Как удалить дубликаты из списка Python?

Дубликаты в списке Python — частая проблема. В статье показано, как быстро убрать повторы, в…

9 месяцев ago

Виртуальный (shared) хостинг от SpaceWeb: технический обзор

Услуга виртуального хостинга на SpaceWeb позволяет арендовать часть сервера (shared-сервера) и разместить на нём свой…

11 месяцев ago