Με δεδομένο ένα παζλ alphametics, βρες τη σωστή λύση.
Το Alphametics είναι ένα παζλ όπου τα γράμματα μέσα στις λέξεις αντικαθίστανται από αριθμούς.
Για παράδειγμα, 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 θα πρέπει να προσπαθεί να λύσει το αλφαμιτικό παζλ και να επιστρέφει ένα map όλων των αντικαταστάσεων γραμμάτων τόσο για το παζλ όσο και για τη λύση της πρόσθεσης.
Χρησιμοποίησε την ακόλουθη υπογραφή για τη συνάρτηση 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
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Go με 34 έννοιες165 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.