Этот код реализует решение криптаритмических головоломок, также известных как числовые ребусы, в которых числовые значения букв в выражениях необходимо определить для получения правильных математических равенств.
-
Импорт модулей:
- itertools.permutations: используется для генерации всех возможных перестановок чисел от 0 до 9, которые будут использоваться для подстановки в уникальные буквы головоломки.
- time: для измерения времени выполнения функций, чтобы определить, сколько времени требуется для решения каждой головоломки.
-
Функция solve_cryptarithmetic(puzzle_str):
- Принимает строку, представляющую криптаритмическую головоломку, в формате 'ЛЕВАЯЧАСТЬ = ПРАВАЯЧАСТЬ'.
- Разделяет входную строку на левую и правую части выражения.
- Выделяет термины и операторы в левой части, а также уникальные буквы, чтобы определить, какие символы нужно заменить цифрами.
- Проверяет, что количество уникальных букв не превышает 10 (так как всего 10 цифр).
- Проходит по всем возможным комбинациям цифр и проверяет, удовлетворяет ли подстановка цифр буквам условию выражения.
- Возвращает словарь, сопоставляющий буквы с цифрами, если решение найдено, иначе возвращает None.
-
Функция main(list_puzzles):
- Получает список криптаритмических головоломок для решения.
- Для каждой головоломки вызывает solve_cryptarithmetic, измеряя затраченное на решение время.
- Форматирует и выводит результат решения, включая подставленные значения и общее время выполнения для каждой задачи.
- Подводит итоги времени, затраченного на решение всех головоломок.
-
Запуск программы:
- Если модуль запускается как основной, инициализируется список криптаритмических выражений, которые затем передаются функции main.
Этот код эффективен для решения криптаритмических головоломок с небольшим числом уникальных букв и позволяет пользователю наблюдать за процессом решения с выводом на экран.
Запустите скрипт, чтобы решить набор криптаритмических головоломок и получить результаты, включая время, затраченное на каждую из них.
if name == 'main': puzzles = [ 'НИТКА+НИТКА=ТКАНЬ', 'ДЕТАЛЬ+ДЕТАЛЬ=ИЗДЕЛИЕ', ... ] main(puzzles)
- Максимальное количество уникальных букв в головоломке - 10.
- Время выполнения может увеличиваться экспоненциально с увеличением числа уникальных букв.
#Python #Cryptarithmetic #Permutations #MathematicalPuzzles #Algorithm #PerformanceTiming