Криптарифм

Криптарифм - это математическое выражение, в котором цифры заменены буквами. При этом одинаковые цифры шифруются одной и той же буквой, а разным цифрам соответствуют различные буквы. Считается, что никакое число не должно начинаться с нуля, а криптарифм должен иметь единственное возможное решение.

Криптарифм можно считать хорошим, если в результате шифрования получилась какая-то осмысленная фраза и выражение имеет уникальное решение. Например:

КНИГА+КНИГА+КНИГА=НАУКА=>28375+28375+28375=85125
ДЕРЕВО-ОПИЛКИ=ПАЛКИ=>569614-487307=82307
МУХА:ХА=УХА=>3125:25=125
КРОТ*Я=ТРОЯК=>4973*8=39784

Допускается использование русских и латинских букв, круглых скобок, знаков сложения (+), вычитания (-), умножения (*), деления (/), возведения в степень (^) и факториала (!). Также, вместо любой цифры в математическом выражении можно использовать символ ?.

УМ^А=МЕШОК=>124=20736
(М+О+С+К+В+А)^4=МОСКВА=>(3+9+0+6+2+5)4=390625
А^Р*К^А=АРКА=>25*92=2592
Я!=АТЛЕТ=>8!=40320
НАГОЙ:ЙОГАН=?=>87912:21978=4

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

Можно также указать, что гласные буквы в задании соответствуют четным цифрам, а согласные буквы - нечетным цифрам (и наоборот). Например, если гласные буквы соответствуют нечетным цифрам, а согласные буквы - четным, то следующая головоломка имеет единственное решение:

МУХА+МУХА=СЛОН=>2309+2309=4618

Примечание. Список гласных букв задан в окне "Настройки". Соответственно, все остальные буквы алфавита считаются согласными.

Особенностью вычислительного алгоритма, используемого в программе Cross+A, является то, что не только окончательный результат вычисления выражения, но и промежуточные результаты на каждом этапе должны являться целыми числами. То есть, программа, решая задание А:Б+В:Б=Б, не сможет найти ответ 1:2+3:2=2. Исключениями являются вычисления квадратного и кубического корней:

АБ^(1/2)=5=>25½=5
АБВ^(1/3)=5=>125=5