🎉 تهانينا! 🎉
لقد حللت المهمة ببراعة! كان صعبًا لكنك وجدت الحل الصحيح. أنت خطوة أقرب إلى الاحتراف! استمر، كل مرحلة تجعلك أقوى.
ProgerLib Python للجميع
تغيير السمة
تخيل أنك تعمل كمنتج موسيقي في استوديو تسجيل. كل يوم تحصل على عشرات العينات الموسيقية القصيرة (الرسومات الإيقاعية). بعضها — مجرد فكرة قصيرة جدًا تتكرر عدة مرات، بينما البعض الآخر — ألحان أكثر تعقيدًا وفريدة. مهمتك — توفير الوقت وكتابة برنامج محلل يساعد في فصل العينات البسيطة المتكررة بسرعة عن المعقدة.
سيتم تمثيل العينة على شكل سطر حيث كل رمز — هو نغمة أو صوت قرع (على سبيل المثال، "Ababab" أو "Takadimitakadimi"). يجب على البرنامج تحديد ما إذا كان السطر بأكمله عبارة عن تكرار لجزء أولي أقصر منه.
على سبيل المثال:
"ababab" هي تكرار للنغمة "ab" 3 مرات. إذن هذه عينة بسيطة. النتيجة: true "abcabc" هي تكرار للنغمة "abc" مرتين. النتيجة: true "abasde" ليست تكرارًا لأي جزء أولي منها. النتيجة: false "aaaa" هي تكرار "a" 4 مرات. النتيجة: true تحتاج إلى كتابة برنامج يأخذ سطرًا واحدًا (العينة) كمدخل ويخرج true إذا كان تكرارًا، و false بخلاف ذلك.
مثال موسيقي (النوع: سطر). هذا سطر واحد بدون فجوات يقوم المستخدم بإدخاله.
نتيجة الفحص (النوع: قيمة مختصرة). إما الكلمة true، أو الكلمة false.
انطلق انطلق انطلق
صحيح
# Получаем строку от пользователя
input_string = input()
# Получаем длину введенной строки
n = len(input_string)
# Создаем флаг, который покажет, нашли ли мы подходящий шаблон. Изначально считаем, что не нашли.
found_pattern = False
# Начинаем цикл для проверки всех возможных длин подшаблона.
# Длина подшаблона (i) может быть от 1 до половины длины всей строки.
# Длиннее половины быть не может, так как шаблон должен повториться хотя бы дважды.
for i in range(1, n // 2 + 1):
# Проверяем, делится ли длина всей строки нацело на длину предполагаемого шаблона.
# Если нет, то из такого шаблона целую строку составить нельзя.
if n % i == 0:
# Если делится, то у нас есть кандидат в шаблоны.
# Это начальная часть строки длиной i.
pattern = input_string[:i]
# Вычисляем, сколько раз наш кандидат-шаблон должен повториться, чтобы получить строку нужной длины.
num_repeats = n // i
# Создаем тестовую строку, повторяя наш кандидат-шаблон нужное количество раз.
test_string = pattern * num_repeats
# Сравниваем созданную тестовую строку с оригинальной.
if test_string == input_string:
# Если они совпали, значит, мы нашли повторяющийся шаблон.
found_pattern = True
# Прерываем цикл, так как дальнейшие проверки не нужны.
break
# После завершения цикла выводим значение флага.
# Если мы нашли шаблон, он будет True, если нет - останется False.
print(found_pattern)
🎉 تهانينا! 🎉
لقد حللت المهمة ببراعة! كان صعبًا لكنك وجدت الحل الصحيح. أنت خطوة أقرب إلى الاحتراف! استمر، كل مرحلة تجعلك أقوى.
AD
إعلان
جارٍ تشغيل الكود...