🎉 Поздравляем! 🎉
Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.
PythonLib
Питон для всех
Четыре друга — Рома (айтишник), Максим (химик), Даник (дизайнер) и Влад (разносторонний человек) — создали общий чат для обмена мемами. Чтобы не отвлекать друг друга от работы неподходящими шутками, они решили написать бота, который будет автоматически определять тематику мема и отправлять его только заинтересованному человеку. Ваша задача — написать ядро для этого бота.
Правила сортировки:
Вы получаете на вход строку — это текст мема. Бот должен проанализировать ее и определить категорию по наличию определенных букв:
Ключевое правило (разрешение конфликтов):
Мем может подходить под несколько категорий одновременно. В таком случае его нужно отправить тому, чья категория "завершилась" раньше. Категория считается "завершенной" в тот момент, когда в строке найдена последняя из необходимых для нее букв. Бот должен выбрать категорию с наименьшим индексом завершения.
Вам нужно написать программу, которая принимает на вход одну строку (мем) и выводит имя получателя.
Одна строка, представляющая собой 'мем' (тип: string).
Имя получателя (тип: string).
submergedits
Roma
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
Реклама
Запускаем ваш код...