🎉 Félicitations ! 🎉
Tu as brillamment résolu la tâche ! C était difficile, mais tu as trouvé la bonne solution. Tu es encore plus proche de maîtriser la programmation ! Continue ainsi.
ProgerLib Python pour tous
Quatre amis — Roma (ITSHNIK), Maxim (chimiste), Danik (designer) et Vlad (personne polyvalente) — ont créé un chat commun pour échanger des mèmes. Afin de ne pas se distraire mutuellement du travail avec des blagues inappropriées, ils ont décidé d'écrire un bot qui déterminera automatiquement le thème du mème et l'enverra uniquement à la personne intéressée. Votre tâche — Écrire un noyau pour ce bot.
Règles de tri :
Vous recevez en entrée une ligne — C'est le texte du mème. Le bot doit l'analyser et déterminer la catégorie en fonction de la présence de certaines lettres :
Règle clé (résolution des conflits) :
Le mème peut correspondre à plusieurs catégories en même temps. Dans ce cas, il doit être envoyé à celui dont la catégorie s'est « terminée » plus tôt. La catégorie est considérée comme « terminée » au moment où la dernière des lettres nécessaires est trouvée dans la ligne . Le bot doit choisir la catégorie avec l'indice de complétion le plus bas.
Vous devez écrire un programme qui accepte une ligne (mème) et affiche le nom du destinataire.
Une ligne, qui est un 'mème' (type : chaîne de caractères).
Nom du destinataire (type : chaîne de caractères).
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)
🎉 Félicitations ! 🎉
Tu as brillamment résolu la tâche ! C était difficile, mais tu as trouvé la bonne solution. Tu es encore plus proche de maîtriser la programmation ! Continue ainsi.
AD
Publicité
Exécution de votre code...