给定一个字母算术谜题,找出正确的答案。
字母算术是一种谜题,单词中的字母会被替换成数字。
例如SEND + MORE = MONEY:
S E N D
M O R E +
-----------
M O N E Y
把这些字母替换成有效的数字后,得到:
9 5 6 7
1 0 8 5 +
-----------
1 0 6 5 2
之所以正确,是因为每个字母都被替换成了不同的数字,而这些单词转换成数字后,能构成一个有效的加法算式。
每个字母必须代表不同的数字,并且多位数的首位数字不能为 0。
定义一个 Go 函数,名为 Solve,它接受一个谜题字符串,字符串中可能包含零个或多个 + 运算符以及一个 == 运算符;Solve 应当尝试解开字母算术谜题,并返回一个映射,其中包含谜题和加法解答中所有字母的替换结果。
函数 Solve 使用以下签名:
func Solve(puzzle string) (map[string]int, error) {
如果给定的谜题无解,Solve 应当返回一个错误。
下面是一个示例谜题及其返回的解答:
Solve("SEND + MORE == MONEY")
会返回
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
将这些字母替换为有效的数字后得到:
9 5 6 7
1 0 8 5 +
-----------
1 0 6 5 2