🎉 Félicitations ! 🎉
Tu as brillamment résolu la tâche ! C était difficile, mais tu as trouvé la bonne solution. Tu es encore plus proche de maîtriser la programmation ! Continue ainsi.
ProgerLib Python pour tous
Imaginez que vous travaillez comme producteur musical dans un studio d'enregistrement. Chaque jour, vous recevez des dizaines de courts échantillons musicaux (motifs rythmiques). Certains d'entre eux — ne sont qu'un motif très court, répété plusieurs fois, tandis que d'autres — sont des mélodies plus complexes et uniques. Votre tâche — est de gagner du temps et d'écrire un programme d'analyse qui aidera à séparer rapidement les échantillons simples et répétitifs des complexes.
Vous recevrez un échantillon sous la forme d'une ligne où chaque symbole — représente une note ou un son de percussion (par exemple, "Ababab" ou "Takadimitakadimi"). Le programme doit déterminer si la ligne entière est une répétition d'une partie initiale plus courte.
Par exemple :
"ababab" est une répétition du motif "ab" 3 fois. C'est donc un échantillon simple. Résultat : true "abcabc" est une répétition du motif "abc" 2 fois. Résultat : true "abasde" n'est pas une répétition d'une de ses parties initiales. Résultat : false "aaaa" est une répétition de "a" 4 fois. Résultat : true Vous devez écrire un programme qui prend une ligne (l'échantillon) en entrée et affiche true s'il s'agit d'une répétition, et false sinon.
Échantillon musical (Type : Ligne). Il s'agit d'une seule ligne sans espaces que l'utilisateur saisit.
Le résultat de la vérification (type : valeur brève). Il s'agit soit du mot true, soit du mot false.
gogogo
vrai
# Получаем строку от пользователя
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)
🎉 Félicitations ! 🎉
Tu as brillamment résolu la tâche ! C était difficile, mais tu as trouvé la bonne solution. Tu es encore plus proche de maîtriser la programmation ! Continue ainsi.
AD
Publicité
Exécution de votre code...