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

Difficulté :

Exercice«Somme d’un tableau mixte»

💻 Python

vous recevrez une ligne "emballée" selon une certaine règle :   k [sujet]   signifie que le sujet   sujet   à l'intérieur des crochets est répété exactement   k   fois. Le nombre   k   est toujours un entier positif. Votre tâche — "déballer" la ligne initiale.

notez que les lignes peuvent être imbriquées les unes dans les autres. Par exemple,   3[a2[c]]   signifie que la ligne   a2[c]   est répétée 3 fois. Vous devez d'abord déballer la partie interne   2[c]   en   cc , puis la substituer dans   a... , obtenant   acc , et à la fin, répéter   acc   3 fois pour obtenir   accaccacc .

Format d entrée

Une ligne sans espaces contenant les lettres minuscules de l'alphabet latin, les chiffres et les crochets & nbsp; [ & nbsp; et & nbsp; ] . Il est garanti que la ligne d'entrée est toujours correcte (il n'y a pas de crochets non fermés, le chiffre se trouve toujours devant un crochet ouvrant, etc.).

Format de sortie

Une ligne & mdash; Le résultat du déballage complet.

Exemple

Entrée

3 [a] 2 [bc]

Sortie

aaabcbc

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
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)

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