یک پازل «آلفامتیک» داده شده است؛ پاسخ درست را پیدا کنید.
آلفامتیک یک پازل است که در آن حروف درون واژهها با عدد جایگزین میشوند.
برای مثال 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