🎉 Glückwunsch! 🎉
Du hast die Aufgabe hervorragend gelöst! Es war schwierig, aber du hast die Lösung gefunden. Du bist dem Meister einen Schritt näher! Mach weiter so.
ProgerLib Python für alle
Stellen Sie sich vor, Sie arbeiten als Musikproduzent in einem Aufnahmestudio. Jeden Tag erhalten Sie Dutzende kurzer musikalischer Samples (rhythmische Muster). Einige davon sind nur sehr kurze Motive, die mehrfach wiederholt werden, während andere komplexere und einzigartigere Melodien sind. Ihre Aufgabe ist es, Zeit zu sparen und ein Analyseprogramm zu schreiben, das hilft, einfache sich wiederholende Samples schnell von komplexen zu trennen.
Ein Sample wird als Zeile dargestellt, in der jedes Symbol eine Note oder ein Schlagklang ist (z. B. "Ababab" oder "Takadimitakadimi"). Das Programm soll bestimmen, ob die gesamte Zeile eine Wiederholung eines kürzeren Anfangsteils ist.
Zum Beispiel:
"ababab" ist eine Wiederholung der Melodie "ab" 3 Mal. Dies ist also ein einfaches sich wiederholendes Sample. Ergebnis: true "abcabc" ist eine Wiederholung der Melodie "abc" 2 Mal. Ergebnis: true "abasde" ist keine Wiederholung eines seiner Anfangsteile. Ergebnis: false "aaaa" ist eine Wiederholung von "a" 4 Mal. Ergebnis: true Sie müssen ein Programm schreiben, das eine Zeile (Sample) als Eingabe nimmt und true ausgibt, wenn es sich um eine Wiederholung handelt, und false andernfalls.
Musikbeispiel (Typ: Zeile). Dies ist eine einzelne Zeile ohne Lücken, die der Benutzer eingibt.
Das Ergebnis der Überprüfung (Typ: Kurzwert). Dies ist entweder das Wort true oder das Wort false .
gogogo
wahr
# Получаем строку от пользователя
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)
🎉 Glückwunsch! 🎉
Du hast die Aufgabe hervorragend gelöst! Es war schwierig, aber du hast die Lösung gefunden. Du bist dem Meister einen Schritt näher! Mach weiter so.
AD
Werbung
Führe deinen Code aus...