Python
Дата строка цифр. Найти закономерность(ключ), как она образована. Не обязательно полное повторение в закономерности
Ключ должен быть кратчайшим из всех возможных ключей, которые могут быть использованы для кодирования сообщений, т. е. когда возможные ключи 12 , 1212, 121212, программа должна вернуть 12.
Пример:
12121212121 - вернет 12
19391 - вернет 1939
19391939193 - вернет 1939

7 Авг 2019 в 19:43
432 +1
0
Ответы
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 до половины длины строки и проверяет, соответствует ли данная подстрока всей строке. Если находится такая подстрока, то она возвращается как ключ.

20 Апр 2024 в 15:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир