Dado un acertijo de alfamética, encuentra la solución correcta.
La alfamética es un acertijo en el que las letras de las palabras se reemplazan por números.
Por ejemplo, SEND + MORE = MONEY:
S E N D
M O R E +
-----------
M O N E Y
Si reemplazas esas letras por números válidos, obtienes:
9 5 6 7
1 0 8 5 +
-----------
1 0 6 5 2
Esto es correcto porque cada letra se reemplaza por un número distinto y las palabras, convertidas en números, forman una suma válida.
Cada letra debe representar un dígito distinto, y el primer dígito de un número de varios dígitos no puede ser cero.
Define una única función de Go, Solve, que acepta un string de rompecabezas que puede tener cero o más operadores +, y un operador ==; Solve debe intentar resolver el rompecabezas de alfamética y devolver un map con todas las sustituciones de letras, tanto para el rompecabezas como para el resultado de la suma.
Usa la siguiente firma para func Solve:
func Solve(puzzle string) (map[string]int, error) {
Solve debe devolver un error si no hay solución para el rompecabezas dado.
Un ejemplo de rompecabezas 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 reemplazas estas letras por números válidos, obtienes:
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.