Utwórz dwukierunkowy kalkulator Gematria dla dowolnej sekwencji znaków Unicode jako alfabetu.
Gematri-Co?
Gematria to system przypisywania wartości liczbowych symbolom, opracowany przez starożytnych Greków i przyjęty przez starożytnych Żydów. Jest w pewien sposób podobny do ASCII lub Unicode, jest po prostu nieliniowy ... Zobacz następującą tabelę (pełna tabela jest dostępna w linku powyżej):
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
...
Nazwy liter nie są ważne, tylko ich indeks w „Tablicy” alfabetu i odpowiednia wartość liczbowa. Alfabet hebrajski ma tylko 22 litery (nie licząc liter „końcowych”), więc maksymalna dostępna wartość wynosi 400.
Jeśli pożyczymy ten system na alfabet angielski (AZ), otrzymamy A = 1, B = 2 ... L = 30 ... U = 300 ... Z = 800.
Dwie rzeczy, które musimy wiedzieć.
Jedną z najważniejszych cech tego systemu jest obliczanie „wartości Gematrii” słowa poprzez sumowanie wartości liter. (Niektórzy twierdzą, że istnieje mistyczny związek między słowami lub frazami (gdy wartość przestrzeni wynosi zero) - które mają tę samą wartość Gematrii).
Każda nieujemna liczba całkowita może być reprezentowana w symbolach. Na przykład (i na razie pozostańmy z alfabetem angielskim) wartość 32 to LB (L = 30 + B = 2). Wartość 1024 to ZTKD (800 + 200 + 20 + 4. Zauważ, że ZSSKD to również 1024, ale nie jest to prawna reprezentacja, ponieważ można ją kompaktować).
Wyzwanie
Napisz program / funkcję / fragment kodu w wybranym języku, który jest najpierw konfigurowany za pomocą alfabetu (patrz API poniżej), a następnie zaakceptuj argument. Argumentem tym może być liczba całkowita lub słowo / fraza. Jeśli jest to liczba całkowita - twój program powinien wypisywać / zwracać swoją reprezentację w symbolach alfabetu - najbardziej kompaktowy (patrz (2) powyżej). Jeśli jest to słowo lub fraza, twój program powinien wypisać / zwrócić wartość Gematria (sumując wartości symboli, nie licząc białych znaków, patrz (1) powyżej).
API
Twój program / funkcja powinna zaakceptować 3 argumenty. Możesz je pobrać ze STDIN, lub jako argumenty funkcji, możesz nawet założyć, że są to zmienne, które zostały zainicjowane programowo przed wywołaniem funkcji.
- Pierwszy argument - pierwszy znak alfabetu (w Unicode).
- Drugi argument - ostatni znak alfabetu (w Unicode).
- Trzeci argument - Liczba całkowita, która ma być reprezentowana w symbolach, LUB fraza utworzona przez dany alfabet.
Wartość wyjściowa / zwracana: W zależności od trzeciego argumentu, jak wyjaśniono powyżej.
Założenia
- Pierwsze dwa argumenty zawsze będą miały jeden znak, a drugi będzie zawsze większy niż pierwszy.
- Sekwencja (od pierwszej do ostatniej włącznie) nigdy nie będzie zawierać żadnej z wartości 30–39 (które reprezentują cyfry 0–9), w przeciwnym razie trzeci argument będzie dwuznaczny. EDYCJA: Nie będzie również zawierać spacji, ponieważ w wyrażeniach spacje są liczone jako zera.
- Trzeci argument, jeśli jest to fraza, może zawierać tylko spacje i litery danego alfabetu. Pusty ciąg nie jest prawidłowym wejściem (możesz założyć, że nie jest pusty). Jeśli jest to liczba całkowita, możesz założyć, że jest to liczba całkowita dodatnia.
Przykłady
Input Output
A Z CODE GOLF 175
a s 512 sssssjb
A B 7 BBBA
≐ ⊐ ≤≫ ≥ 1700
Punktacja
Score = upvotes - length/100.0
Twój kod powinien być krótki, ale co ważniejsze, popularny. Negatywne wyniki mogą również grać razem. Zwycięzca otrzyma odpowiedź z najwyższym wynikiem od tygodnia, 2014-11-29 19:20:00 UTC.