🎉 Glückwunsch! 🎉
Du hast die Aufgabe hervorragend gelöst! Es war schwierig, aber du hast die Lösung gefunden. Du bist dem Meister einen Schritt näher! Mach weiter so.
ProgerLib Python für alle
Vier Freunde — Roma (IT-Spezialist), Maxim (Chemiker), Danik (Designer) und Vlad (vielseitige Person) — haben einen gemeinsamen Chat erstellt, um Memes auszutauschen. Um sich nicht gegenseitig mit unpassenden Witzen von der Arbeit abzulenken, beschlossen sie, einen Bot zu schreiben, der automatisch das Thema des Memes bestimmt und es nur an die interessierte Person sendet. Ihre Aufgabe — Schreiben Sie einen Kern für diesen Bot.
Sortierregeln:
Sie erhalten als Eingabe eine Zeile — Dies ist der Text des Memes. Der Bot muss ihn analysieren und die Kategorie anhand des Vorhandenseins bestimmter Buchstaben bestimmen:
Schlüsselregel (Konfliktlösung):
Das Meme kann gleichzeitig in mehrere Kategorien passen. In diesem Fall muss es an denjenigen gesendet werden, dessen Kategorie früher "abgeschlossen" war. Eine Kategorie gilt in dem Moment als "abgeschlossen", wenn der letzte der für sie erforderlichen Buchstaben in der Zeile gefunden wird . Der Bot muss die Kategorie mit dem kleinsten Abschlussindex auswählen.
Sie müssen ein Programm schreiben, das eine Zeile (Meme) entgegennimmt und den Namen des Empfängers ausgibt.
Eine Zeile, die ein 'Meme' ist (Typ: Zeichenkette).
Name des Empfängers (Typ: Zeichenkette).
untergetaucht
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)
🎉 Glückwunsch! 🎉
Du hast die Aufgabe hervorragend gelöst! Es war schwierig, aber du hast die Lösung gefunden. Du bist dem Meister einen Schritt näher! Mach weiter so.
AD
Werbung
Führe deinen Code aus...