學習軌道
/
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

這樣是正確的,因為每個字母都替換成不同的數字,而這些單字轉換成數字後,能構成正確的和。

每個字母必須代表不同的數字,而且多位數的首位數字不能是零。

實作

定義單一個 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
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Go Exercism

準備好開始 字母算術 了嗎?

註冊 Exercism,透過 34 個概念165 個練習 和真人引導來學習並精通 Go,全部免費。