Определить, является ли последовательность кратной подпоследовательности в Python
У меня есть кортеж нулей и единиц, например:
(1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1)
Оказывается:
(1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1) == (1, 0, 1, 1) * 3
Я хочу функциюf
такой, что еслиs
непустой кортеж нулей и единиц,f(s)
самая короткая подзаголовокr
такой, чтоs == r * n
для некоторого положительного целого числаn
.
Так, например,
f( (1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1) ) == (1, 0, 1, 1)
Какой удобный способ написать функциюf
в питоне?
Редактировать:
Наивный метод, которым я сейчас пользуюсь
def f(s):
for i in range(1,len(s)):
if len(s)%i == 0 and s == s[:i] * (len(s)/i):
return s[:i]