Ctrl K

Буквенный ребус на сложение

Сложная
Дан ребус: слова addends складываются, и в сумме получается слово total. Каждое слово записано заглавными латинскими буквами. Нужно заменить каждую букву цифрой от 0 до 9 так, чтобы: - одинаковые буквы получили одинаковые цифры, а разные буквы — разные цифры; - ни одно слово из нескольких букв не начиналось с нуля (слово из одной буквы может быть нулём); - сумма чисел из addends равнялась числу total. Цифр всего десять, поэтому ребус, в котором больше десяти различных букв, решения не имеет. Верните True, если такая замена существует, и False иначе.
Пример 1
addends=['TO', 'GO'], total='OUT' → True

Подходит T = 2, O = 1, G = 8, U = 0: 21 + 81 = 102.

Пример 2
addends=['AB', 'AB'], total='AB' → False

Из AB + AB = AB следует AB = 0, но двузначное число не может начинаться с нуля.

Пример 3
addends=['A', 'B'], total='A' → True

Достаточно B = 0, а A — любая другая цифра: однобуквенное слово может обозначать ноль.

Ограничения
  • 2 ≤ addends.length ≤ 5
  • 1 ≤ addends[i].length, total.length ≤ 11
  • слова состоят только из заглавных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиВсе способы расставить пробелы СложнаяСлова в буквенной сетке СложнаяЗнаки между цифрами СложнаяКратчайшее однозначное сокращение СложнаяЗеркальные блоки из слов Сложная
загружаем Python…
Вход
addends=['TO', 'GO'], total='OUT'
Ожидается
True

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 150 тестов на сервере, включая скрытые.