Alfabe olarak herhangi bir Unicode karakter dizisi için çift yönlü bir Gematria hesap makinesi oluşturun.
Gematri-Ne?
Gematria , eski Yunanlılar tarafından geliştirilen ve eski Yahudiler tarafından benimsenen sembollere sayısal değerler atama sistemidir. ASCII veya Unicode gibi bir şekilde, sadece doğrusal değil ... Aşağıdaki tabloya bakın (yukarıdaki tabloda tam tablo mevcuttur):
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
...
Harflerin adları önemli değildir, sadece alfabenin "Dizisi" ndeki dizini ve ilgili sayısal değerdir. İbrani alfabesinde sadece 22 harf vardır ("son" harfler dahil değildir), bu nedenle mevcut maksimum değer 400'dür.
Bu sistemi İngiliz alfabesine (AZ) ödünç alırsak A = 1, B = 2 ... L = 30 ... U = 300 ... Z = 800 ile sonuçlanırız.
Bilmemiz gereken iki şey var.
Bu sistemde en önemli özelliklerinden biri de bir "Gematria Değerini" hesaplarken kelimesi ile, özetliyor onun harfleri değerleri. (Bazıları, kelimeler veya kelime öbekleri arasında (uzayın değeri sıfır olduğunda) - aynı Gematria Değerini paylaşan mistik bir bağlantı olduğunu söylüyor.
Negatif olmayan herhangi bir Tamsayı sembollerle gösterilebilir. Örneğin (şimdilik İngiliz alfabesi ile kalalım) 32 değeri LB'dir (L = 30 + B = 2). 1024 değeri ZTKD'dir (800 + 200 + 20 + 4. ZSSKD'nin de 1024 olduğunu unutmayın, ancak sıkıştırılabileceğinden bu yasal bir temsil değildir).
Meydan okuma
Tercih ettiğiniz dilde bir program / işlev / kod snippet'i yazın; bu kod ilk önce bir alfabe ile ayarlanır (aşağıdaki API'ya bakın) ve daha sonra bir argümanı kabul eder. Bu argüman bir Tamsayı veya bir kelime / cümle olabilir. Eğer bir Tamsayı ise - programınız alfabetik sembollerde gösterimini çıkarmalı / döndürmelidir - en sıkıştırılmış olanı (bkz. Yukarıdaki (2)). Bir kelime veya kelime öbeği ise, programınızın Gematria Değerini vermesi / döndürmesi gerekir (beyaz boşlukları sayarak sembollerin değerlerini toplayarak, yukarıdaki (1) 'e bakınız).
API
Programınız / işleviniz 3 bağımsız değişkeni kabul etmelidir. Bunları STDIN'den alabilir veya işlev bağımsız değişkenleri olarak, bunların işlev çağrılmadan önce programsal olarak başlatılan değişkenler olduğunu varsayabilirsiniz.
- İlk argüman - alfabenin ilk karakteri (Unicode'da).
- İkinci argüman - alfabenin son karakteri (Unicode'da).
- Üçüncü argüman - Sembollerde temsil edilecek bir Tamsayı, VEYA verilen alfabe tarafından oluşturulan bir ifade.
Çıktı / Dönüş Değeri: Yukarıda açıklandığı gibi üçüncü argümana bağlı olarak.
Varsayımlar
- İlk iki argüman her biri birer karakter uzunluğunda, ikincisi her zaman birinciden daha büyük olacaktır.
- Dizi (ilkten sonuncuya kadar dahil) hiçbir zaman 30-39 (0-9 arasındaki rakamları temsil eden) değerlerden hiçbirini içermeyecektir, aksi takdirde üçüncü argümanı belirsizleştirecektir. EDIT: Cümlelerde boşluklar sıfır olarak sayıldığından boşluk da içermez.
- Üçüncü argüman, bir ifade olması durumunda, sadece verilen alfabenin boşluklarını ve harflerini içerebilir. Boş dize geçerli bir giriş değil (boş olmadığını varsayabilirsiniz). Bir Tamsayı olması durumunda, bunun pozitif bir Tamsayı olduğunu varsayabilirsiniz.
Örnekler
Input Output
A Z CODE GOLF 175
a s 512 sssssjb
A B 7 BBBA
≐ ⊐ ≤≫ ≥ 1700
puanlama
Score = upvotes - length/100.0
Kodunuz kısa olmalı, ancak daha da önemlisi popüler olmalıdır. Olumsuz puanlar da oynayabilir. Kazanan, şu andan itibaren bir hafta içinde en yüksek puanı alan cevap olacak, 2014-11-29 19:20:00 UTC.