Треки
/
Go
Go
/
Вправи
/
Алфаметика
Алфаметика

Алфаметика

Складна

Вказівки

Дано головоломку-альфаметику, знайдіть правильний розвʼязок.

Альфаметика - це головоломка, у якій літери в словах замінюють на числа.

Наприклад, 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
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Go Exercism

Час розпочати Алфаметика?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Go, а також 34 концепції165 вправ та справжнє наставництво від людей, і все це безкоштовно.