Erstellen Sie einen bidirektionalen Gematria-Rechner für eine bestimmte Folge von Unicode-Zeichen als Alphabet.
Gematri-was?
Gematria ist ein System zur Zuweisung numerischer Werte zu Symbolen, das von alten Griechen entwickelt und von alten Juden übernommen wurde. Es ist ähnlich wie ASCII oder Unicode, es ist nur nicht linear ... Siehe folgende Tabelle (die vollständige Tabelle finden Sie unter dem obigen Link):
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
...
Die Namen der Buchstaben sind nicht wichtig, nur ihr Index im "Array" des Alphabets und der jeweilige numerische Wert. Das hebräische Alphabet hat nur 22 Buchstaben (ohne "letzte" Buchstaben), daher beträgt der maximal verfügbare Wert 400.
Wenn wir dieses System dem englischen Alphabet (AZ) ausleihen, erhalten wir A = 1, B = 2 ... L = 30 ... U = 300 ... Z = 800.
Zwei Dinge müssen wir wissen.
Eines der wichtigsten Merkmale dieses Systems ist die Berechnung des "Gematria-Werts" eines Wortes durch Aufsummieren der Buchstabenwerte. (Einige sagen, dass es eine mystische Verbindung zwischen Wörtern oder Phrasen gibt (wenn der Wert des Raums Null ist) - die denselben Gematria-Wert haben).
Jede nicht negative Ganzzahl kann in Symbolen dargestellt werden. Zum Beispiel (und bleiben wir vorerst beim englischen Alphabet) ist der Wert von 32 LB (L = 30 + B = 2). Der Wert von 1024 ist ZTKD (800 + 200 + 20 + 4. Beachten Sie, dass ZSSKD ebenfalls 1024 ist, dies ist jedoch keine rechtliche Darstellung, da es komprimiert werden kann).
Die Herausforderung
Schreiben Sie ein Programm / eine Funktion / ein Code-Snippet in der Sprache Ihrer Wahl, das zuerst mit einem Alphabet eingerichtet wird (siehe API unten), und akzeptieren Sie dann ein Argument. Dieses Argument kann eine Ganzzahl oder ein Wort / eine Phrase sein. Wenn es sich um eine Ganzzahl handelt, sollte Ihr Programm seine Darstellung in den Alphabetsymbolen ausgeben / zurückgeben - die am stärksten komprimierte (siehe (2) oben). Wenn es sich um ein Wort oder eine Phrase handelt, sollte Ihr Programm den Gematria-Wert ausgeben / zurückgeben (indem Sie die Werte der Symbole summieren, ohne Leerzeichen zu zählen, siehe (1) oben).
API
Ihr Programm / Ihre Funktion sollte 3 Argumente akzeptieren. Sie können sie von STDIN abrufen oder als Funktionsargumente sogar davon ausgehen, dass es sich um Variablen handelt, die vor Ihrem Funktionsaufruf programmgesteuert initialisiert wurden.
- Erstes Argument - das erste Zeichen (in Unicode) des Alphabets.
- Zweites Argument - das letzte Zeichen (in Unicode) des Alphabets.
- Drittes Argument - Eine Ganzzahl, die in Symbolen dargestellt werden soll, ODER eine Phrase, die durch das angegebene Alphabet erstellt wird.
Ausgabe- / Rückgabewert: Abhängig vom dritten Argument, wie oben erläutert.
Annahmen
- Die ersten beiden Argumente sind immer jeweils ein Zeichen lang, und das zweite ist immer größer als das erste.
- Die Sequenz (erste bis letzte, einschließlich) enthält niemals einen der Werte 30-39 (die die Ziffern 0-9 darstellen), andernfalls wird das dritte Argument mehrdeutig. BEARBEITEN: Es enthält auch kein Leerzeichen, da Leerzeichen in Phrasen als Nullen gezählt werden.
- Das dritte Argument, falls es sich um eine Phrase handelt, darf nur Leerzeichen und Buchstaben des angegebenen Alphabets enthalten. Eine leere Zeichenfolge ist keine gültige Eingabe (Sie können davon ausgehen, dass sie nicht leer ist). Wenn es sich um eine Ganzzahl handelt, können Sie davon ausgehen, dass es sich um eine positive Ganzzahl handelt.
Beispiele
Input Output
A Z CODE GOLF 175
a s 512 sssssjb
A B 7 BBBA
≐ ⊐ ≤≫ ≥ 1700
Wertung
Score = upvotes - length/100.0
Ihr Code sollte kurz, aber vor allem beliebt sein. Negative Ergebnisse können ebenfalls mitspielen. Der Gewinner ist die Antwort mit der höchsten Punktzahl in einer Woche, 29.11.2014 19:20:00 UTC.