Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Описание кода

Этот код реализует решение криптаритмических головоломок, также известных как числовые ребусы, в которых числовые значения букв в выражениях необходимо определить для получения правильных математических равенств.

Основные компоненты кода:

  1. Импорт модулей:

    • itertools.permutations: используется для генерации всех возможных перестановок чисел от 0 до 9, которые будут использоваться для подстановки в уникальные буквы головоломки.
    • time: для измерения времени выполнения функций, чтобы определить, сколько времени требуется для решения каждой головоломки.
  2. Функция solve_cryptarithmetic(puzzle_str):

    • Принимает строку, представляющую криптаритмическую головоломку, в формате 'ЛЕВАЯЧАСТЬ = ПРАВАЯЧАСТЬ'.
    • Разделяет входную строку на левую и правую части выражения.
    • Выделяет термины и операторы в левой части, а также уникальные буквы, чтобы определить, какие символы нужно заменить цифрами.
    • Проверяет, что количество уникальных букв не превышает 10 (так как всего 10 цифр).
    • Проходит по всем возможным комбинациям цифр и проверяет, удовлетворяет ли подстановка цифр буквам условию выражения.
    • Возвращает словарь, сопоставляющий буквы с цифрами, если решение найдено, иначе возвращает None.
  3. Функция main(list_puzzles):

    • Получает список криптаритмических головоломок для решения.
    • Для каждой головоломки вызывает solve_cryptarithmetic, измеряя затраченное на решение время.
    • Форматирует и выводит результат решения, включая подставленные значения и общее время выполнения для каждой задачи.
    • Подводит итоги времени, затраченного на решение всех головоломок.
  4. Запуск программы:

    • Если модуль запускается как основной, инициализируется список криптаритмических выражений, которые затем передаются функции main.

Этот код эффективен для решения криптаритмических головоломок с небольшим числом уникальных букв и позволяет пользователю наблюдать за процессом решения с выводом на экран.

Пример использования:

Запустите скрипт, чтобы решить набор криптаритмических головоломок и получить результаты, включая время, затраченное на каждую из них.

if name == 'main': puzzles = [ 'НИТКА+НИТКА=ТКАНЬ', 'ДЕТАЛЬ+ДЕТАЛЬ=ИЗДЕЛИЕ', ... ] main(puzzles)

Ограничения:

  • Максимальное количество уникальных букв в головоломке - 10.
  • Время выполнения может увеличиваться экспоненциально с увеличением числа уникальных букв.

Хештеги

#Python #Cryptarithmetic #Permutations #MathematicalPuzzles #Algorithm #PerformanceTiming

About

CryptaRithm

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages