給定一個字母算式謎題,找出正確的解答。
字母算式 是一種謎題,其中單字裡的字母會被替換成數字。
例如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
這樣是正確的,因為每個字母都替換成不同的數字,而這些單字轉換成數字後,能構成正確的和。
每個字母必須代表不同的數字,而且多位數的首位數字不能是零。
定義單一個 Go 函式 Solve,它接受一個謎題字串,字串中可能有零個或多個 + 運算子,以及一個 == 運算子;Solve 應該嘗試解開這個字母算術謎題,並回傳一個對應表,包含謎題與加法解中所有字母的替換方式。
請使用以下簽章來定義 func 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