Rutas
/
Go
Go
/
Ejercicios
/
Alfamética
Alfamética

Alfamética

Difícil

Instrucciones

Dado un puzle de alphametics, encuentra la solución correcta.

La alphametics es un puzle en el que las letras de las palabras se sustituyen por números.

Por ejemplo, SEND + MORE = MONEY:

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

Si sustituimos estas letras por números válidos, obtenemos:

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

Esto es correcto porque cada letra se sustituye por un número diferente y las palabras, convertidas en números, forman una suma válida.

Cada letra debe representar un dígito diferente, y el primer dígito de un número de varias cifras no puede ser cero.

Implementación

Define una única función de Go, Solve, que acepta un string de puzle que puede tener cero o más operadores + y un operador ==; Solve debe intentar resolver el puzle de alphametics y devolver un mapa con todas las sustituciones de letras, tanto para el puzle como para la solución de la suma.

Usa la siguiente firma para la función Solve:

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

Solve debe devolver un error si no hay solución para el puzle dado.

Un ejemplo de puzle y de solución devuelta es:

Solve("SEND + MORE == MONEY")

devolvería

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

Si sustituimos estas letras por números válidos, obtenemos:

  9 5 6 7
  1 0 8 5 +
-----------
1 0 6 5 2
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Go Exercism

¿Listo para empezar Alfamética?

Regístrate en Exercism para aprender y dominar Go con 34 conceptos165 ejercicios y mentoría humana real, todo gratis.