トラック
/
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の関数を1つだけ定義します。名前はSolveで、引数としてパズルの文字列を受け取ります。この文字列には+演算子が0個以上と、==演算子が1つ含まれます。Solveはalphameticsパズルを解こうとし、パズルと足し算の解答の両方について、すべての文字の置き換えを表すマップを返します。

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を学んでマスターできます。すべて無料です。