Skip to content

Instantly share code, notes, and snippets.

@flutesa
Last active May 11, 2020 17:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save flutesa/2b04c9297bd343d300a99e61bb88c9d8 to your computer and use it in GitHub Desktop.
Save flutesa/2b04c9297bd343d300a99e61bb88c9d8 to your computer and use it in GitHub Desktop.
# Датчик принимает сигнал, состоящий из 0 и 1.
# Известно, что сигнал имеет периодичность, не превышающей натурального числа n.
# Напишите код, который вычисляет периодичность сигнала.
# Считайте, что 3 < n < 1000, а общая длина сигнала значительно превышает n.
# Пример сигнала с периодичностью 4 (повторяющийся элемент 1011): 1011101110111011101110111011101110111011
def sequence_finder(s):
pattern_sequence = ''
step = 3
while step <= len(s) // 2:
for i in range(0, len(s) // 2, step):
pattern_sequence = s[:step + i]
print(step, pattern_sequence)
if pattern_sequence != s[step:2 * step + i]:
pattern_sequence = ''
step += 1
else:
pattern = s[:step]
print('Answer:', pattern)
return
else:
print('no pattern')
# sequence_finder('1011101110111011101110111011101110111011')
# sequence_finder('10111011101110111011')
# sequence_finder('101101')
# sequence_finder('101101101')
# sequence_finder('101101101101')
# sequence_finder('11111111111111111111')
sequence_finder('01000011')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment