Percursos
/
Go
Go
/
Exercícios
/
Alfamética
Alfamética

Alfamética

Difícil

Instruções

Dado um puzzle de alfamética, encontra a solução correta.

A alfamética é um puzzle 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 estas letras por números válidos, obtemos:

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

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

Cada letra tem de representar um algarismo diferente, e o algarismo inicial de um número com vários algarismos não pode ser zero.

Implementação

Define uma única função Go, Solve, que aceita uma string de quebra-cabeças que pode ter zero ou mais operadores + e um operador ==; Solve deve tentar resolver o quebra-cabeças de alfamética e devolver um mapa com todas as substituições de letras, tanto para o quebra-cabeças como para a solução da adição.

Usa a seguinte assinatura para a função Solve:

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

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

Um exemplo de quebra-cabeças e da solução devolvida é:

Solve("SEND + MORE == MONEY")

devolveria

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 estas letras por números válidos, obtém-se:

  9 5 6 7
  1 0 8 5 +
-----------
1 0 6 5 2
Editar via GitHub A ligação abre numa nova janela ou separador
Go Exercism

Estás pronto para começar Alfamética?

Inscreve-te no Exercism para aprenderes e dominares Go com 34 conceitos165 exercícios, e mentoria humana real, tudo grátis.