🎉 Parabéns! 🎉
Você resolveu a tarefa brilhantemente! Foi difícil, mas você encontrou a solução certa. Você está um passo mais perto de dominar a programação! Continue assim.
ProgerLib Python para todos
Imagine que você está trabalhando como produtor musical em um estúdio de gravação. Todos os dias você recebe dezenas de pequenas amostras musicais (padrões rítmicos). Algumas delas — são apenas um motivo muito curto, repetido várias vezes, enquanto outras — são melodias mais complexas e únicas. Sua tarefa — é economizar tempo e escrever um programa analisador que ajude a separar rapidamente amostras simples e repetitivas das complexas.
Você representará uma amostra na forma de uma linha onde cada símbolo — é uma nota ou som de percussão (por exemplo, "Ababab" ou "Takadimitakadimi"). O programa deve determinar se toda a linha é uma repetição de alguma parte inicial mais curta dela.
Por exemplo:
" ababab " é uma repetição da melodia " ab " 3 vezes. Portanto, é uma amostra simples. Resultado: true " abcabc " é uma repetição da melodia " abc " 2 vezes. Resultado: true " abasde " não é uma repetição de nenhuma de suas partes iniciais. Resultado: false " aaaa " é uma repetição " a " 4 vezes. Resultado: true Você precisa escrever um programa que recebe uma linha (amostra) como entrada e exibe true , se for uma repetição, e false caso contrário.
Amostra Musical (Tipo: Linha). Esta é uma linha sem lacunas que o usuário insere.
O resultado da verificação (tipo: valor breve). Isto é ou a palavra true, ou a palavra false.
gogogo
verdadeiro
# Получаем строку от пользователя
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)
🎉 Parabéns! 🎉
Você resolveu a tarefa brilhantemente! Foi difícil, mas você encontrou a solução certa. Você está um passo mais perto de dominar a programação! Continue assim.
AD
Publicidade
Executando seu código...