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.
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
Regístrate en Exercism para aprender y dominar Go con 34 conceptos165 ejercicios y mentoría humana real, todo gratis.