• 1
    Ввод и вывод данных
    • Задачи
  • 2
    Условия
    • Задачи
  • 3
    Цикл for
    • Задачи
  • 4
    Строки
    • Задачи
  • 5
    Цикл while
    • Задачи
  • 6
    Списки
    • Задачи
  • 7
    Двумерные массивы
    • Задачи
  • 8
    Словари
    • Задачи
  • 9
    Множества
    • Задачи
  • 10
    Функции и рекурсия
    • Задачи
  • к

Занятие 4. строки

Уровень сложности:

иконка человека красный иконка человека белая иконка человека зеленая Pythonlib

Задача«Мемы»

Четыре друга — Рома (айтишник), Максим (химик), Даник (дизайнер) и Влад (разносторонний человек) — создали общий чат для обмена мемами. Чтобы не отвлекать друг друга от работы неподходящими шутками, они решили написать бота, который будет автоматически определять тематику мема и отправлять его только заинтересованному человеку. Ваша задача — написать ядро для этого бота.

Правила сортировки:
Вы получаете на вход строку — это текст мема. Бот должен проанализировать ее и определить категорию по наличию определенных букв:

  1. IT-мем: если в строке есть все буквы 'b', 'u', 'g' (в любом порядке и количестве). Получатель — Roma.
  2. Химический мем: если в строке есть все буквы 'b', 'o', 'o', 'm' (то есть, буква 'o' должна встретиться как минимум дважды). Получатель — Maxim.
  3. Дизайнерский мем: если в строке есть все буквы 'e', 'd', 'i', 't', 's'. Получатель — Danik.
  4. Другое: если мем не подходит ни под одну из вышеперечисленных категорий. Получатель — Vlad.

Ключевое правило (разрешение конфликтов):
Мем может подходить под несколько категорий одновременно. В таком случае его нужно отправить тому, чья категория "завершилась" раньше. Категория считается "завершенной" в тот момент, когда в строке найдена последняя из необходимых для нее букв. Бот должен выбрать категорию с наименьшим индексом завершения.

Вам нужно написать программу, которая принимает на вход одну строку (мем) и выводит имя получателя.

Формат ввода

Одна строка, представляющая собой 'мем' (тип: string).

Формат Вывода

Имя получателя (тип: string).

Пример

Ввод

submergedits

Вывод

Roma

Подсказка

Тут подсказки не будет, решай сам!

main.py
Тест 1
Тест 2
Тест 3
Тест 4
Тест 5
Тест 6
Тест 7
Тест 8
Тест 9
Тест 10
Решение разработчика
from collections import Counter

def find_completion_index(meme, required_letters):
    """
    Находит индекс, на котором категория считается "завершенной".
    Возвращает индекс или очень большое число, если категория не подходит.
    """
    # Создаем счетчик необходимых букв (например, для 'boom' -> {'b': 1, 'o': 2, 'm': 1})
    required_counts = Counter(required_letters)
    current_counts = Counter()
    
    # Проверяем, выполнены ли все условия
    def are_requirements_met():
        for char, count in required_counts.items():
            if current_counts[char] < count:
                return False
        return True

    # Идем по строке и считаем буквы
    for i, char in enumerate(meme):
        if char in required_counts:
            current_counts[char] += 1
            # Как только все буквы найдены, возвращаем текущий индекс
            if are_requirements_met():
                return i
    
    # Если цикл закончился, а буквы не найдены, возвращаем "бесконечность"
    return float('inf')

# Получаем текст мема
meme_text = input()

# Создаем список кандидатов с их условиями
candidates = [
    ('Roma', 'bug'),
    ('Maxim', 'boom'),
    ('Danik', 'edits')
]

# Находим "индекс завершения" для каждого кандидата
results = []
for name, letters in candidates:
    index = find_completion_index(meme_text, letters)
    results.append((index, name))

# Находим победителя. Функция min() для кортежей (индекс, имя)
# автоматически выберет тот, у которого первый элемент (индекс) наименьший.
winner_index, winner_name = min(results)

# Если минимальный индекс остался "бесконечным", значит, никто не подошел
if winner_index == float('inf'):
    print("Vlad")
else:
    print(winner_name)

🎉 Поздравляем! 🎉

Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.

AD

Реклама

red-snake blue-snake green-snake

Запускаем ваш код...

Помощник ИИ

Привет! Я твой помощник по программированию. Задавай любые вопросы по Python, я могу рассказать о функциях, методах, обьяснить то, что тебе не понятно, а так же о текущей задаче!