Python Дата строка цифр. Найти закономерность(ключ), как она образована. Не обязательно полное повторение в закономерности Ключ должен быть кратчайшим из всех возможных ключей, которые могут быть использованы для кодирования сообщений, т. е. когда возможные ключи 12 , 1212, 121212, программа должна вернуть 12. Пример: 12121212121 - вернет 12 19391 - вернет 1939 19391939193 - вернет 1939
Для решения данной задачи можно использовать алгоритм Касис Клеен. Вот пример Python кода:
def find_pattern(s): n = len(s) for i in range(1, n // 2 + 1): if n % i == 0 and s[:i] * (n // i) == s: return s[:i] return s # Примеры print(find_pattern("12121212121")) # 12 print(find_pattern("19391")) # 1939 print(find_pattern("19391939193")) # 1939
Этот код ищет кратчайший ключ, который может быть использован для кодирования сообщения. Он перебирает все возможные длины ключа от 1 до половины длины строки и проверяет, соответствует ли данная подстрока всей строке. Если находится такая подстрока, то она возвращается как ключ.
Для решения данной задачи можно использовать алгоритм Касис Клеен. Вот пример Python кода:
def find_pattern(s):n = len(s)
for i in range(1, n // 2 + 1):
if n % i == 0 and s[:i] * (n // i) == s:
return s[:i]
return s
# Примеры
print(find_pattern("12121212121")) # 12
print(find_pattern("19391")) # 1939
print(find_pattern("19391939193")) # 1939
Этот код ищет кратчайший ключ, который может быть использован для кодирования сообщения. Он перебирает все возможные длины ключа от 1 до половины длины строки и проверяет, соответствует ли данная подстрока всей строке. Если находится такая подстрока, то она возвращается как ключ.