Unicode文字の任意のシーケンスをアルファベットとして、双方向Gematria計算機を作成します。
Gematri-What?
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になります。
知っておくべき2つのこと。
このシステムで最も重要な機能の1つは、文字の値を合計することにより、単語の「Gematria値」を計算することです。(単語またはフレーズ間に神秘的なつながりがあると言う人もいます(スペースの値がゼロの場合)-同じGematria値を共有します)。
負でない整数は、シンボルで表すことができます。たとえば(そして今のところ英語のアルファベットのままにしておきましょう)32の値はLB(L = 30 + B = 2)です。1024の値はZTKD(800 + 200 + 20 +4。ZSSKDも1024ですが、圧縮できるため、これは正当な表現ではないことに注意してください)。
チャレンジ
選択した言語でプログラム/関数/コードスニペットを記述します。最初にアルファベットでセットアップし(以下のAPIを参照)、引数を受け入れます。その引数は整数、または単語/フレーズです。整数の場合-プログラムはアルファベット記号で表現を出力/返す必要があります-最もコンパクトなものです(上記の(2)を参照)。単語またはフレーズの場合、プログラムはGematria値を出力/返す必要があります(空白をカウントせずにシンボルの値を合計することにより、上記(1)を参照)。
API
プログラム/関数は3つの引数を受け入れる必要があります。STDINから取得することも、関数の引数として取得することもできますが、関数呼び出しの前にプログラムで初期化される変数であると仮定することもできます。
- 最初の引数-アルファベットの最初の文字(Unicode)。
- 2番目の引数-アルファベットの最後の文字(Unicode)。
- 3番目の引数-シンボルで表される整数、または指定されたアルファベットで作成されるフレーズ。
出力/戻り値:上記で説明したように、3番目の引数に依存します。
仮定
- 最初の2つの引数は常に1文字ずつで、2番目の引数は常に最初の引数よりも大きいです。
- シーケンス(最初から最後まで、包括的)には値30-39(数字0-9を表す)は含まれません。そうでない場合、3番目の引数があいまいになります。編集:フレーズではスペースはゼロとしてカウントされるため、スペースも含まれません。
- 3番目の引数は、フレーズの場合、指定されたアルファベットのスペースと文字のみを含むことができます。空の文字列は有効な入力ではありません(空ではないと想定できます)。整数の場合、正の整数であると想定できます。
例
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の今から1週間で最高得点を獲得します。