У меня есть кортеж нулей и единиц, например:
(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]