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 حل أحجية الألفاميتيك، وأن تُرجع خريطة تضم كل استبدالات الحروف لكلٍّ من الأحجية ونتيجة الجمع معًا.

استخدم التوقيع التالي للدالة 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

مستعد لبدء Alphametics؟

سجّل في Exercism لتتعلّم وتتقن Go عبر 34 مفهومًا165 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.