轨道
/
Go
Go
/
练习
/
字母算术
字母算术

字母算术

困难

说明

给定一个字母算术谜题,找出正确的答案。

字母算术是一种谜题,单词中的字母会被替换成数字。

例如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
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Go Exercism

准备好开始 字母算术 了吗?

注册 Exercism,借助 34 个概念165 个练习 和真人导师指导,学习并掌握 Go,全部免费。