🎉 恭喜! 🎉
你出色地完成了任务!这是一个不小的挑战,但你找到了正确答案。你离编程大师又近了一步!继续保持,每一步都让你更强大。
四位朋友——罗曼(IT专家)、马克西姆(化学家)、丹尼克(设计师)和弗拉德(多面手)——创建了一个共享聊天群来交换表情包。为了不因不合时宜的玩笑而分散彼此的工作注意力,他们决定编写一个机器人,该机器人能自动判断表情包的主题,并将其仅发送给感兴趣的人。你的任务——为这个机器人编写核心程序。
分类规则:
你将在输入中收到一行——这是表情包的文本。机器人必须分析该文本,并根据是否包含特定字母来确定其类别:
关键规则(冲突解决):
一个表情包可能同时符合多个类别。在这种情况下,它必须发送给其类别“完成”得更早的那个人。当该类别所需的最后一个字母在行中被找到时,该类别即被视为“完成”。机器人必须选择完成索引最小的类别。
你需要编写一个程序,该程序接收一行(表情包)并输出接收者的名字。
一行,即一个“梗”(类型:字符串)。
收件人姓名(类型:字符串)。
淹没它
罗马
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
广告
正在运行代码...