• 1
    Eingabe und Ausgabe
    • Aufgaben
  • 2
    Bedingungen
    • Aufgaben
  • 3
    For-Schleife
    • Aufgaben
  • 4
    Zeichenketten
    • Aufgaben
  • 5
    While-Schleife
    • Aufgaben
  • 6
    Listen
    • Aufgaben
  • 7
    2D-Arrays
    • Aufgaben
  • 8
    Wörterbücher
    • Aufgaben
  • 9
    Mengen
    • Aufgaben
  • 10
    Funktionen und Rekursion
    • Aufgaben
  • к

Lektion 4. Lines

Schwierigkeit:

Aufgabe«Memes»

💻 Python

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:



  1. IT-Meme:   wenn die Zeile alle Buchstaben 'b', 'u', 'g' enthält (in beliebiger Reihenfolge und Anzahl). Empfänger —   Roma .

  2. Chemie-Meme:   wenn die Zeile alle Buchstaben 'b', 'o', 'o', 'm' enthält (d. h. der Buchstabe 'o' muss mindestens zweimal vorkommen). Empfänger —   Maxim .

  3. Designer-Meme:   wenn die Zeile alle Buchstaben 'e', 'd', 'i', 't', 's' enthält. Empfänger —   Danik .

  4. Sonstiges:   wenn das Meme in keine der oben genannten Kategorien passt. Empfänger —   Vlad .


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.

Eingabeformat

Eine Zeile, die ein 'Meme' ist (Typ: Zeichenkette).

Ausgabeformat

Name des Empfängers (Typ: Zeichenkette).

Beispiel

Eingabe

untergetaucht

Ausgabe

Roma

Hinweis

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
Entwicklerlösung
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

red-snake blue-snake green-snake

Führe deinen Code aus...

KI-Assistent

Hallo! Ich bin dein Programmier-Assistent. Stelle mir beliebige Fragen zu Python — ich erkläre Funktionen, Methoden und helfe dir bei der aktuellen Aufgabe!