Trilhas
/
Go
Go
/
Exercícios
/
Alphametics
Alphametics

Alphametics

Difícil

Instruções

Dado um quebra-cabeça de alfamética, encontre a solução correta.

A alfamética é um quebra-cabeça em que as letras das palavras são substituídas por números.

Por exemplo, SEND + MORE = MONEY:

  S E N D
  M O R E +
-----------
M O N E Y

Substituindo as letras por números válidos, temos:

  9 5 6 7
  1 0 8 5 +
-----------
1 0 6 5 2

Isso está correto porque cada letra é substituída por um número diferente, e as palavras, traduzidas em números, formam uma soma válida.

Cada letra deve representar um dígito diferente, e o primeiro dígito de um número com vários dígitos não pode ser zero.

Implementação

Defina uma única func Go, Solve, que recebe uma string de quebra-cabeça que pode ter zero ou mais operadores + e um operador ==; Solve deve tentar resolver o quebra-cabeça de alfamética e retornar um map com todas as substituições de letras, tanto para o quebra-cabeça quanto para a solução da adição.

Use a seguinte assinatura para a func Solve:

func Solve(puzzle string) (map[string]int, error) {

Solve deve retornar um erro se não houver solução para o quebra-cabeça dado.

Um exemplo de quebra-cabeça e a solução retornada:

Solve("SEND + MORE == MONEY")

retornaria

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

Substituindo essas letras por números válidos, temos:

  9 5 6 7
  1 0 8 5 +
-----------
1 0 6 5 2
Editar via GitHub O link abre em uma nova janela ou aba
Go Exercism

Tudo pronto para começar Alphametics?

Crie sua conta no Exercism para aprender e dominar Go com 34 conceitos165 exercícios e mentoria humana de verdade, tudo de graça.