🎉 تهانينا! 🎉
لقد حللت المهمة ببراعة! كان صعبًا لكنك وجدت الحل الصحيح. أنت خطوة أقرب إلى الاحتراف! استمر، كل مرحلة تجعلك أقوى.
ProgerLib Python للجميع
تغيير السمة
سيتم إعطاؤك سطرًا "مُغلفًا" وفقًا لقاعدة معينة: k [subject] يعني أن النص subject داخل الأقواس المربعة يتكرر تمامًا k مرة. الرقم k دائمًا عدد صحيح موجب. مهمتك — هي "فك تغليف" السطر الأولي.
لاحظ أن الأسطر يمكن أن تكون متداخلة داخل بعضها البعض. على سبيل المثال، 3[a2[c]] يعني أن السطر a2[c] يتكرر 3 مرات. أولاً، تحتاج إلى فك الجزء الداخلي 2[c] إلى cc ، ثم استبداله في a... ، لتحصل على acc ، وفي النهاية كرر acc 3 مرات لتحصل على accaccacc .
سطر واحد بدون فواصل يحتوي على أحرف صغيرة من الأبجدية اللاتينية والأرقام والأقواس المربعة
سطر واحد & mdash; نتيجة التفكيك الكامل.
3 [a] 2 [bc]
aaabcbc
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)
🎉 تهانينا! 🎉
لقد حللت المهمة ببراعة! كان صعبًا لكنك وجدت الحل الصحيح. أنت خطوة أقرب إلى الاحتراف! استمر، كل مرحلة تجعلك أقوى.
AD
إعلان
جارٍ تشغيل الكود...