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

Dificuldade:

Tarefa«Soma de array misto»

💻 Python

Você receberá uma linha "empacotada" de acordo com uma certa regra:   k[assunto]   significa que o texto   assunto   dentro dos colchetes é repetido exatamente   k   vezes. O número   k   é sempre um inteiro positivo. Sua tarefa — "desempacotar" a linha inicial.

Observe que as linhas podem estar aninhadas umas nas outras. Por exemplo,   3[a2[c]]   significa que a linha   a2[c]   é repetida 3 vezes. Primeiro você precisa desempacotar a parte interna   2[c]   em   cc , depois substituí-la em   a... , obtendo   acc , e no final repetir   acc   3 vezes para obter   accaccacc .

Formato de entrada

Uma linha sem espaços contendo letras minúsculas do alfabeto latino, números e colchetes & nbsp; [ & nbsp; e & nbsp; ] . É garantido que a linha de entrada está sempre correta (não há colchetes não fechados, o número sempre vem antes de um colchete de abertura, etc.).

Formato de saída

Uma linha & mdash; O resultado da descompactação completa.

Exemplo

Entrada

3 [a] 2 [bc]

Saída

aaabcbc

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

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