Crea un calcolatore gematria bidirezionale, per ogni sequenza di caratteri Unicode come alfabeto.
Gematri-Cosa?
La gematria è un sistema di assegnazione di valori numerici ai simboli, sviluppato dagli antichi greci e adottato dagli antichi ebrei. È in un modo come ASCII o Unicode, è solo non lineare ... Vedi la tabella seguente (la tabella completa è disponibile nel link sopra):
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
...
I nomi delle lettere non sono importanti, ma solo il loro indice nella "Matrice" dell'alfabeto e il rispettivo valore numerico. L'alfabeto ebraico ha solo 22 lettere (escluse le lettere "finali"), quindi il valore massimo disponibile è 400.
Se prendiamo in prestito questo sistema con l'alfabeto inglese (AZ) finiremo con A = 1, B = 2 ... L = 30 ... U = 300 ... Z = 800.
Due cose che dobbiamo sapere.
Una delle caratteristiche più importanti di questo sistema è il calcolo del "valore Gematria" di una parola , riassumendo i valori delle sue lettere. (Alcuni dicono che esiste una connessione mistica tra parole o frasi (quando il valore dello spazio è zero) - che condividono lo stesso valore Gematria).
Qualsiasi numero intero non negativo può essere rappresentato in simboli. Ad esempio (e restiamo con l'alfabeto inglese per ora) il valore di 32 è LB (L = 30 + B = 2). Il valore di 1024 è ZTKD (800 + 200 + 20 + 4. Si noti che anche ZSSKD è 1024, ma questa non è una rappresentazione legale, poiché può essere compattata).
La sfida
Scrivi un programma / una funzione / uno snippet di codice nella tua lingua preferita, che viene prima impostato con un alfabeto (vedi API di seguito) e quindi accetta un argomento. Tale argomento può essere un numero intero o una parola / frase. Se è un numero intero - il tuo programma dovrebbe generare / restituire la sua rappresentazione nei simboli alfabetici - il più compatto (vedi (2) sopra). Se è una parola o una frase, il tuo programma dovrebbe generare / restituire il valore Gematria (sommando i valori dei simboli, non contando gli spazi bianchi, vedi (1) sopra).
API
Il tuo programma / funzione dovrebbe accettare 3 argomenti. Puoi ottenerli da STDIN o, come argomenti di funzione, puoi persino supporre che siano variabili inizializzate a livello di codice prima dell'invocazione della tua funzione.
- Primo argomento: il primo carattere (in Unicode) dell'alfabeto.
- Secondo argomento: l'ultimo carattere (in Unicode) dell'alfabeto.
- Terzo argomento - Un numero intero, da rappresentare in simboli, O una frase che viene creata dal dato alfabeto.
Valore di output / ritorno: a seconda del terzo argomento, come spiegato sopra.
ipotesi
- I primi due argomenti saranno sempre lunghi un carattere ciascuno e il secondo sarà sempre più grato del primo.
- La sequenza (dalla prima all'ultima, compresa) non includerà mai nessuno dei valori 30-39 (che rappresentano le cifre 0-9), altrimenti renderà ambiguo il terzo argomento. EDIT: non conterrà anche spazio, poiché nelle frasi gli spazi vengono contati come zeri.
- Il terzo argomento, nel caso sia una frase, può contenere solo spazi e lettere dell'alfabeto specificato. La stringa vuota non è un input valido (si può presumere che non sia vuoto). Nel caso in cui sia un numero intero, puoi presumere che sia un numero intero positivo.
Esempi
Input Output
A Z CODE GOLF 175
a s 512 sssssjb
A B 7 BBBA
≐ ⊐ ≤≫ ≥ 1700
punteggio
Score = upvotes - length/100.0
Il tuo codice dovrebbe essere breve, ma soprattutto popolare. I punteggi negativi possono anche giocare insieme. Il vincitore sarà la risposta con il punteggio più alto tra una settimana, 29/11/2014 alle 19:20:00 UTC.