Tracks
/
Go
Go
/
Übungen
/
Alphametik
Alphametik

Alphametik

Schwer

Anleitung

Gegeben ist ein Alphametik-Rätsel. Finde die richtige Lösung.

Alphametik ist ein Rätsel, bei dem Buchstaben in Wörtern durch Zahlen ersetzt werden.

Zum Beispiel SEND + MORE = MONEY:

  S E N D
  M O R E +
-----------
M O N E Y

Setzt man gültige Zahlen ein, erhält man:

  9 5 6 7
  1 0 8 5 +
-----------
1 0 6 5 2

Das ist richtig, weil jeder Buchstabe durch eine andere Zahl ersetzt wird und die Wörter, in Zahlen übersetzt, eine gültige Summe ergeben.

Jeder Buchstabe muss eine andere Ziffer darstellen, und die führende Ziffer einer mehrstelligen Zahl darf nicht null sein.

Implementierung

Definiere eine einzelne Go-Funktion, Solve, die einen Puzzle-String entgegennimmt, der null oder mehr + Operatoren und einen == Operator enthalten kann. Solve sollte versuchen, das Alphametik-Rätsel zu lösen und eine Map mit allen Buchstabensubstitutionen sowohl für das Rätsel als auch für die Lösung der Addition zurückgeben.

Verwende für die Funktion Solve die folgende Signatur:

func Solve(puzzle string) (map[string]int, error) {

Solve sollte einen Fehler zurückgeben, wenn es keine Lösung für das gegebene Rätsel gibt.

Ein Beispiel für ein Rätsel und die zurückgegebene Lösung ist:

Solve("SEND + MORE == MONEY")

würde zurückgeben

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

Ersetzt man diese durch gültige Zahlen, ergibt das:

  9 5 6 7
  1 0 8 5 +
-----------
1 0 6 5 2
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Go Exercism

Bereit, mit Alphametik zu starten?

Melde dich bei Exercism an, um Go mit 34 Konzepte165 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.