• 1
    Entrada y salida de datos
    • Tareas
  • 2
    Condiciones
    • Tareas
  • 3
    Bucle for
    • Tareas
  • 4
    Cadenas de texto
    • Tareas
  • 5
    Bucle while
    • Tareas
  • 6
    Listas
    • Tareas
  • 7
    Matrices 2D
    • Tareas
  • 8
    Diccionarios
    • Tareas
  • 9
    Conjuntos
    • Tareas
  • 10
    Funciones y recursión
    • Tareas
  • к

Lección 3. FOR cycle

Dificultad:

иконка человека красный иконка человека белая иконка человека зеленая Pythonlib

Tarea«Suma de arreglo mixto»

💻 Python

Se te dará una línea "empaquetada" según una cierta regla: k[sub] significa que el texto sub dentro de los corchetes se repite exactamente k veces. El número k siempre es un entero positivo. Tu tarea — "desempaquetar" la línea inicial.

Ten en cuenta que las líneas pueden estar anidadas unas dentro de otras. Por ejemplo, 3[a2[c]] significa que la línea a2[c] se repite 3 veces. Primero debes desempaquetar la parte interna 2[c] en cc , luego sustituirla en a... , obteniendo acc , y al final repetir acc 3 veces para obtener accaccacc .

Formato de entrada

Una línea sin espacios que contiene letras minúsculas del alfabeto latino, números y corchetes & nbsp; [ & nbsp; y & nbsp; ] . Está garantizado que la línea de entrada siempre es correcta (no hay corchetes sin cerrar, el número siempre está delante de un corchete de apertura, etc.).

Formato de salida

Una línea & mdash; El resultado del desempaquetado completo.

Ejemplo

Entrada

3 [a] 2 [bc]

Salida

aaabcbc

Pista

There will be no clue here, decide for yourself!

main.py
Prueba 1
Prueba 2
Prueba 3
Prueba 4
Prueba 5
Prueba 6
Prueba 7
Prueba 8
Prueba 9
Prueba 10
Solución del desarrollador
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)

🎉 ¡Felicidades! 🎉

¡Has resuelto la tarea brillantemente! Era un reto difícil, pero encontraste la solución correcta. ¡Estás un paso más cerca de dominar la programación! Sigue así, cada etapa superada te hace más fuerte.

AD

Publicidad

red-snake blue-snake green-snake

Ejecutando tu código...

Asistente de IA

¡Hola! Soy tu asistente de programación. Hazme cualquier pregunta sobre Python — puedo explicarte funciones, métodos y ayudarte con la tarea actual.