Дано головоломку-альфаметику, знайдіть правильний розвʼязок.
Альфаметика - це головоломка, у якій літери в словах замінюють на числа.
Наприклад, SEND + MORE = MONEY:
S E N D
M O R E +
-----------
M O N E Y
Якщо замінити літери на правильні числа, отримаємо:
9 5 6 7
1 0 8 5 +
-----------
1 0 6 5 2
Це правильно, тому що кожну літеру замінено на іншу цифру, а слова, перетворені на числа, дають правильну суму.
Кожна літера має позначати іншу цифру, а перша цифра багатоцифрового числа не може бути нулем.
Визначте одну функцію Go, Solve, яка приймає рядок тексту (англ. string) із головоломкою, що може містити нуль або більше операторів + і один оператор ==; Solve має спробувати розвʼязати головоломку альфаметики та повернути словник усіх замін літер як для головоломки, так і для розвʼязку додавання.
Використайте такий підпис для функції Solve:
func Solve(puzzle string) (map[string]int, error) {
Solve має повернути помилку, якщо для заданої головоломки немає розвʼязку.
Приклад головоломки та поверненого розвʼязку:
Solve("SEND + MORE == MONEY")
поверне
map[string]int{"M":1, "O":0, "N":6, "E":5, "Y":2, "S":9, "D":7, "R":8}, nil
S E N D
M O R E +
-----------
M O N E Y
Якщо замінити їх на коректні числа, отримаємо:
9 5 6 7
1 0 8 5 +
-----------
1 0 6 5 2
Зареєструйтеся на Exercism, щоб вивчати й опановувати Go, а також 34 концепції165 вправ та справжнє наставництво від людей, і все це безкоштовно.