Étant donné un puzzle alphamétique, trouve la solution correcte.
L'alphamétique est un puzzle où les lettres des mots sont remplacées par des nombres.
Par exemple SEND + MORE = MONEY :
S E N D
M O R E +
-----------
M O N E Y
En remplaçant ces lettres par des nombres valides, on obtient :
9 5 6 7
1 0 8 5 +
-----------
1 0 6 5 2
C'est correct, car chaque lettre est remplacée par un nombre différent et les mots, une fois traduits en nombres, forment alors une somme valide.
Chaque lettre doit représenter un chiffre différent, et le premier chiffre d'un nombre à plusieurs chiffres ne doit pas être zéro.
Définis une seule fonction Go, Solve, qui accepte une chaîne représentant un puzzle pouvant contenir zéro ou plusieurs opérateurs +, ainsi qu'un unique opérateur == ; Solve doit tenter de résoudre le puzzle d'alphamétique et renvoyer une map de toutes les substitutions de lettres, à la fois pour le puzzle et pour la somme solution.
Utilise la signature suivante pour la fonction Solve :
func Solve(puzzle string) (map[string]int, error) {
Solve doit renvoyer une erreur s'il n'existe aucune solution au puzzle donné.
Voici un exemple de puzzle et la solution renvoyée :
Solve("SEND + MORE == MONEY")
renverrait
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
En remplaçant ces lettres par des chiffres valides, on obtient :
9 5 6 7
1 0 8 5 +
-----------
1 0 6 5 2
Inscris-toi sur Exercism pour apprendre et maîtriser Go avec 34 concepts165 exercices, et un vrai mentorat humain, le tout gratuitement.