• 1
    Entrée et sortie
    • Tâches
  • 2
    Conditions
    • Tâches
  • 3
    Boucle for
    • Tâches
  • 4
    Chaînes
    • Tâches
  • 5
    Boucle while
    • Tâches
  • 6
    Listes
    • Tâches
  • 7
    Tableaux 2D
    • Tâches
  • 8
    Dictionnaires
    • Tâches
  • 9
    Ensembles
    • Tâches
  • 10
    Fonctions et récursion
    • Tâches
  • к

Leçon 4. Lines

Difficulté :

Exercice«Mèmes»

💻 Python

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 :

  1. Mème IT :   si la ligne contient toutes les lettres 'b', 'u', 'g' (dans n'importe quel ordre et quantité). Destinataire —   Roma .
  2. Mème chimique :   si la ligne contient toutes les lettres 'b', 'o', 'o', 'm' (c'est-à-dire que la lettre 'o' doit apparaître au moins deux fois). Destinataire —   Maxim .
  3. Mème designer :   si la ligne contient toutes les lettres 'e', 'd', 'i', 't', 's'. Destinataire —   Danik .
  4. Autre :   si le mème ne correspond à aucune des catégories ci-dessus. Destinataire —   Vlad .

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.

Format d entrée

Une ligne, qui est un 'mème' (type : chaîne de caractères).

Format de sortie

Nom du destinataire (type : chaîne de caractères).

Exemple

Entrée

submergedits

Sortie

Roma

Indice

There will be no clue here, decide for yourself!

main.py
Test 1
Test 2
Test 3
Test 4
Test 5
Test 6
Test 7
Test 8
Test 9
Test 10
Solution du développeur
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é

red-snake blue-snake green-snake

Exécution de votre code...

Assistant IA

Bonjour ! Je suis ton assistant de programmation. Pose moi toutes tes questions sur Python — je peux t expliquer les fonctions, les méthodes et t aider avec la tâche en cours !