Créez une calculatrice Gematria bidirectionnelle, pour n'importe quelle séquence donnée de caractères Unicode comme l'alphabet.
Gematri-Quoi?
La gématrie est un système d'attribution de valeurs numériques aux symboles, développé par les anciens Grecs et adopté par les anciens Juifs. C'est d'une manière comme ASCII ou Unicode, c'est juste non linéaire ... Voir le tableau suivant (le tableau complet est disponible dans le lien ci-dessus):
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
...
Les noms des lettres ne sont pas importants, seulement leur index dans le "tableau" de l'alphabet et la valeur numérique respective. L'alphabet hébreu ne compte que 22 lettres (sans compter les lettres "finales"), la valeur maximale disponible est donc de 400.
Si nous empruntons ce système à l'alphabet anglais (AZ), nous nous retrouverons avec A = 1, B = 2 ... L = 30 ... U = 300 ... Z = 800.
Deux choses que nous devons savoir.
L'une des caractéristiques les plus importantes de ce système est le calcul de la "valeur en gématrie" d'un mot , en additionnant les valeurs de ses lettres. (Certains disent qu'il existe un lien mystique entre des mots ou des phrases (lorsque la valeur de l'espace est nulle) - qui partagent la même valeur de Gematria).
Tout entier non négatif peut être représenté par des symboles. Par exemple (et restons avec l'alphabet anglais pour l'instant), la valeur de 32 est LB (L = 30 + B = 2). La valeur de 1024 est ZTKD (800 + 200 + 20 + 4. Notez que ZSSKD est également 1024, mais ce n'est pas une représentation légale, car il peut être compacté).
Le défi
Écrivez un programme / une fonction / un extrait de code dans la langue de votre choix, qui est d'abord configuré avec un alphabet (voir API ci-dessous), puis acceptez un argument. Cet argument peut être un entier ou un mot / une phrase. S'il s'agit d'un nombre entier - votre programme devrait afficher / renvoyer sa représentation dans les symboles de l'alphabet - le plus compact (voir (2) ci-dessus). S'il s'agit d'un mot ou d'une phrase, votre programme doit générer / renvoyer la valeur de Gematria (en additionnant les valeurs des symboles, sans compter les espaces, voir (1) ci-dessus).
API
Votre programme / fonction doit accepter 3 arguments. Vous pouvez les obtenir à partir de STDIN, ou en tant qu'arguments de fonction, vous pouvez même supposer que ce sont des variables qui ont été initialisées par programme avant l'invocation de votre fonction.
- Premier argument - le premier caractère (en Unicode) de l'alphabet.
- Deuxième argument - le dernier caractère (en Unicode) de l'alphabet.
- Troisième argument - Un entier, à représenter en symboles, OU une phrase qui est créée par l'alphabet donné.
Valeur de sortie / retour: selon le troisième argument, comme expliqué ci-dessus.
Hypothèses
- Les deux premiers arguments auront toujours un caractère chacun, et le second sera toujours plus gracieux que le premier.
- La séquence (du premier au dernier inclus) n'inclura jamais aucune des valeurs 30-39 (qui représentent les chiffres 0-9), sinon elle rendra le troisième argument ambigu. EDIT: Il ne contiendra pas d'espace non plus, car dans les phrases, les espaces sont comptés comme des zéros.
- Le troisième argument, s'il s'agit d'une phrase, ne peut contenir que des espaces et des lettres de l'alphabet donné. Une chaîne vide n'est pas une entrée valide (vous pouvez supposer qu'elle n'est pas vide). Dans le cas où il s'agit d'un entier, vous pouvez supposer qu'il s'agit d'un entier positif.
Exemples
Input Output
A Z CODE GOLF 175
a s 512 sssssjb
A B 7 BBBA
≐ ⊐ ≤≫ ≥ 1700
Notation
Score = upvotes - length/100.0
Votre code doit être court, mais surtout populaire. Les scores négatifs peuvent également jouer. Le gagnant sera la réponse avec le score le plus élevé dans une semaine à partir de maintenant, 2014-11-29 19:20:00 UTC.