• 1
    إدخال وإخراج البيانات
    • المهام
  • 2
    الشروط
    • المهام
  • 3
    حلقة for
    • المهام
  • 4
    السلاسل النصية
    • المهام
  • 5
    حلقة while
    • المهام
  • 6
    القوائم
    • المهام
  • 7
    مصفوفات ثنائية الأبعاد
    • المهام
  • 8
    القواميس
    • المهام
  • 9
    المجموعات
    • المهام
  • 10
    الدوال والتكرار
    • المهام
  • к

درس 3. FOR cycle

الصعوبة:

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

مسألة«مجموع مصفوفة مختلطة»

💻 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

تلميح

There will be no clue here, decide for yourself!

main.py
اختبار 1
اختبار 2
اختبار 3
اختبار 4
اختبار 5
اختبار 6
اختبار 7
اختبار 8
اختبار 9
اختبار 10
حل المطور
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

إعلان

red-snake blue-snake green-snake

جارٍ تشغيل الكود...

مساعد الذكاء الاصطناعي

مرحباً! أنا مساعدك في البرمجة. اسألني أي شيء عن Python — يمكنني شرح الدوال والطرق ومساعدتك في المهمة الحالية!