У меня есть кортеж нулей и единиц, например:
(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 в Python?
Edit:
Наивный метод, который я использую в настоящее время
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]