Dato un puzzle di alphametics, trova la soluzione corretta.
L'Alphametics è un puzzle in cui le lettere delle parole vengono sostituite con dei numeri.
Per esempio, SEND + MORE = MONEY:
S E N D
M O R E +
-----------
M O N E Y
Sostituendo queste lettere con dei numeri validi si ottiene:
9 5 6 7
1 0 8 5 +
-----------
1 0 6 5 2
Il risultato è corretto perché ogni lettera è sostituita da un numero diverso e le parole, tradotte in numeri, formano una somma valida.
Ogni lettera deve rappresentare una cifra diversa, e la cifra iniziale di un numero con più cifre non può essere zero.
Definisci un'unica funzione Go, Solve, che accetta una stringa puzzle che può contenere zero o più operatori + e un solo operatore ==; Solve deve provare a risolvere il puzzle alfametico e restituire una mappa di tutte le sostituzioni di lettere, sia per il puzzle sia per la soluzione dell'addizione.
Usa la seguente firma per la funzione Solve:
func Solve(puzzle string) (map[string]int, error) {
Solve deve restituire un errore se il puzzle dato non ha soluzione.
Un esempio di puzzle e la soluzione restituita è:
Solve("SEND + MORE == MONEY")
restituirebbe
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
Sostituendo queste lettere con numeri validi si ottiene:
9 5 6 7
1 0 8 5 +
-----------
1 0 6 5 2
Iscriviti a Exercism per imparare e padroneggiare Go con 34 concetti165 esercizi e il mentoring di persone reali, tutto gratis.