• 1
    Entrada e saída
    • Tarefas
  • 2
    Condições
    • Tarefas
  • 3
    Loop for
    • Tarefas
  • 4
    Strings
    • Tarefas
  • 5
    Loop while
    • Tarefas
  • 6
    Listas
    • Tarefas
  • 7
    Matrizes 2D
    • Tarefas
  • 8
    Dicionários
    • Tarefas
  • 9
    Conjuntos
    • Tarefas
  • 10
    Funções e recursão
    • Tarefas
  • к

Lição 4. Lines

Dificuldade:

Tarefa«Memes»

💻 Python

quatro amigos & mdash; Roma (T.I.), Maxim (químico), Danik (designer) e Vlad (pessoa versátil) & mdash; criaram um chat comum para trocar memes. Para não se distraírem do trabalho com piadas inadequadas, decidiram escrever um bot que determinará automaticamente o tema do meme e o enviará apenas para a pessoa interessada. Sua tarefa & mdash; escrever um núcleo para este bot.

rn

regras de classificação:
você recebe na entrada uma linha & mdash; Este é o texto do meme. O bot deve analisá-lo e determinar a categoria pela presença de certas letras:

rn
    rn
  1. meme de TI: & nbsp; se a linha tiver todas as letras 'b', 'u', 'g' (em qualquer ordem e quantidade). Destinatário & mdash; & nbsp; Roma .
  2. rn
  3. meme químico: & nbsp; se a linha tiver todas as letras 'b', 'o', 'o', 'm' (ou seja, a letra 'o' deve aparecer pelo menos duas vezes). Destinatário & mdash; & nbsp; Maxim .
  4. rn
  5. meme de designer: & nbsp; se a linha tiver todas as letras 'e', 'd', 'i', 't', 's'. Destinatário & mdash; & nbsp; Danik .
  6. rn
  7. outro: & nbsp; se o meme não se encaixar em nenhuma das categorias acima. Destinatário & mdash; & nbsp; Vlad .
  8. rn
rn

regra chave (resolução de conflitos):
o meme pode se encaixar em várias categorias ao mesmo tempo. Nesse caso, ele deve ser enviado para aquele cuja categoria "terminou" antes. A categoria é considerada "completa" no momento em que a última das letras necessárias para ela é encontrada na linha & nbsp; . O bot deve escolher a categoria com o menor índice de conclusão.

rn

você precisa escrever um programa que aceite uma linha (meme) e exiba o nome do destinatário.

Formato de entrada

Uma linha, que é um 'meme' (tipo: string).

Formato de saída

Nome do destinatário (tipo: string).

Exemplo

Entrada

submergedits

Saída

Roma

Dica

There will be no clue here, decide for yourself!

main.py
Teste 1
Teste 2
Teste 3
Teste 4
Teste 5
Teste 6
Teste 7
Teste 8
Teste 9
Teste 10
Solução do desenvolvedor
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)

🎉 Parabéns! 🎉

Você resolveu a tarefa brilhantemente! Foi difícil, mas você encontrou a solução certa. Você está um passo mais perto de dominar a programação! Continue assim.

AD

Publicidade

red-snake blue-snake green-snake

Executando seu código...

Assistente de IA

Olá! Sou seu assistente de programação. Faça qualquer pergunta sobre Python — posso explicar funções, métodos e ajudá-lo com a tarefa atual!