• 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 3. FOR cycle

Schwierigkeit:

Aufgabe«Summe eines gemischten Arrays»

💻 Python

Sie erhalten eine Zeile, die nach einer bestimmten Regel "verpackt" ist: k[sub] bedeutet, dass der Teilstring sub innerhalb der eckigen Klammern genau k Mal wiederholt wird. Die Zahl k ist immer eine positive ganze Zahl. Ihre Aufgabe ist es, die ursprüngliche Zeile zu "entpacken".

Beachten Sie, dass die Zeilen ineinander verschachtelt sein können. Zum Beispiel bedeutet 3[a2[c]] , dass die Zeile a2[c] 3 Mal wiederholt wird. Zuerst müssen Sie den inneren Teil 2[c] zu cc entpacken, dann in a... einsetzen, um acc zu erhalten, und schließlich acc 3 Mal wiederholen, um accaccacc zu erhalten.

Eingabeformat

Eine Zeile ohne Lücken, die die Kleinbuchstaben des lateinischen Alphabets, die Zahlen und die eckigen Klammern   [   und   ] enthält. Es ist garantiert, dass die Eingabezeile immer korrekt ist (es gibt keine ungeschlossenen Klammern, die Zahl steht immer vor einer öffnenden Klammer usw.).

Ausgabeformat

Eine Zeile & mdash; Das Ergebnis der vollständigen Entpackung.

Beispiel

Eingabe

3 [a] 2 [bc]

Ausgabe

aaabcbc

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
def unpack_string(s: str) -> str:
    """
    Распаковывает строку вида k[substring], включая вложенные структуры.
    """
    stack = []
    current_num = 0
    current_string = ''

    for char in s:
        if char.isdigit():
            # Собираем число, если оно многозначное (например, 10, 12)
            current_num = current_num * 10 + int(char)
        elif char == '[':
            # Начало новой подстроки. Сохраняем текущее состояние в стек.
            # Сохраняем текущую строку и число-повторитель для нее.
            stack.append(current_string)
            stack.append(current_num)
            # Сбрасываем переменные для нового уровня вложенности.
            current_string = ''
            current_num = 0
        elif char == ']':
            # Конец подстроки. Достаем из стека предыдущее состояние.
            num = stack.pop()
            prev_string = stack.pop()
            # Формируем новую текущую строку, повторяя распакованный фрагмент
            # и добавляя его к строке предыдущего уровня.
            current_string = prev_string + current_string * num
        else:
            # Просто добавляем букву к текущей строке.
            current_string += char
            
    return current_string


input_string = input()
result = unpack_string(input_string)
print(result)

🎉 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!