Створіть двонаправлений калькулятор Gematria для будь-якої заданої послідовності символів Unicode як алфавіту.
Гематрі-що?
Gematria - це система присвоєння числових знаків символам, розроблена стародавніми греками та прийнята стародавніми євреями. Це таким чином, як ASCII або Unicode, це просто нелінійно ... Дивіться наступну таблицю (повна таблиця доступна за посиланням вище):
Index Letter Letter name Value
--------------------------
0 א "Alef" 1
1 ב "Bet" 2
...
8 ט "Tet" 9
9 י "Yud" 10
10 כ "Kaf" 20
...
17 צ "Tsady" 90
18 ' "Kuf" 100
19 ר "Resh" 200
...
Назви букв не важливі, лише їх індекс у "масиві" алфавіту та відповідне числове значення. Єврейський алфавіт містить лише 22 літери (не включаючи "заключні" літери), тому максимальне доступне значення - 400.
Якщо ми запозичимо цю систему в англійському алфавіті (AZ), ми отримаємо A = 1, B = 2 ... L = 30 ... U = 300 ... Z = 800.
Дві речі, які нам потрібно знати.
Однією з найважливіших особливостей цієї системи є обчислення "значення гематрії" слова шляхом підсумовування значень його букв. (Деякі кажуть, що між словами або фразами міститься містичний зв’язок (коли значення простору дорівнює нулю) - вони мають одне і те саме значення Gematria).
Будь-який невід'ємний цілий число може бути представлений символами. Наприклад (і давайте залишимося з англійським алфавітом зараз) значення 32 - LB (L = 30 + B = 2). Значення 1024 - ZTKD (800 + 200 + 20 + 4. Зауважте, що ZSSKD також 1024, але це не є законним представництвом, оскільки його можна ущільнити).
Змагання
Напишіть програму / функцію / фрагмент коду на обрану вами мову, яку спочатку налаштовуйте за алфавітом (див. API нижче), а потім прийміть аргумент. Цей аргумент може бути цілим числом або словом / фразою. Якщо це Integer - ваша програма повинна вивести / повернути своє представлення в алфавітних символах - найбільш ущільненому (див. (2) вище). Якщо це слово або фраза, ваша програма повинна вивести / повернути значення Gematria (шляхом підсумовування знаків символів, не рахуючи пробілів, див. (1) вище).
API
Ваша програма / функція повинна приймати 3 аргументи. Ви можете отримати їх з STDIN або як аргументи функції, ви навіть можете припустити, що вони є змінними, які ініціалізуються програмно перед викликом функції.
- Перший аргумент - перший символ (в Unicode) алфавіту.
- Другий аргумент - останній символ (в Unicode) алфавіту.
- Третій аргумент - Ціле число, яке має бути представлене символами, АБО фраза, яка створюється заданим алфавітом.
Значення виходу / повернення: залежно від третього аргументу, як пояснено вище.
Припущення
- Перші два аргументи завжди будуть по одному символу кожен, а другий завжди буде тертм, ніж перший.
- Послідовність (перша до останньої, включно) ніколи не буде включати жодне зі значень 30-39 (які представляють цифри 0-9), інакше вона зробить третій аргумент неоднозначним. EDIT: Він також не буде містити місця, оскільки у фразах пробіли зараховуються як нулі.
- Третій аргумент, якщо це словосполучення, може містити лише пробіли та літери даного алфавіту. Порожній рядок не є дійсним введенням (ви можете припустити, що він не порожній). У випадку, якщо це ціле число, ви можете припустити, що це ціле число.
Приклади
Input Output
A Z CODE GOLF 175
a s 512 sssssjb
A B 7 BBBA
≐ ⊐ ≤≫ ≥ 1700
Оцінка балів
Score = upvotes - length/100.0
Ваш код повинен бути коротким, але головне популярним. Негативні бали також можуть пограти. Переможець отримає відповідь з найвищим балом за тиждень 2014-11-29 19:20:00 UTC.