Gönderen Vikipedi makalesinde :
Konum aritmetiği (Latin arithmeticæ localis), John Napier'in, hem sembolik olarak hem de satranç tahtası benzeri bir ızgara üzerinde, Rabdology (1617) adlı eserinde bir hesaplama tekniği olarak araştırdığı katkı (konumsal olmayan) ikili sayı sistemleridir.
Ne?
Yer sayıları, alfabenin harflerini kullanarak sayı yazmanın bir yoludur.
İkili gösterim henüz standartlaştırılmamıştı, bu yüzden Napier ikili sayıları temsil etmek için konum numaraları denilen şeyi kullandı. Napier sistemi sayıları temsil etmek için işaret-değer gösterimini kullanır; iki harfin birbirini takip eden güçlerini temsil etmek için İngilizce alfabesinden art arda gelen harfleri kullanır: a = 2 ^ 0 = 1, b = 2 ^ 1 = 2, c = 2 ^ 2 = 4, d = 2 ^ 3 = 8, e = 2 ^ 4 = 16 vb.
Bir örnek
ab 10 bazında = 1 + 2 = 3
aabb = 10 + 1 = 1 + 2 + 2 = 6
Not aabbiçin kısaltılabilir bcdaha yüksek tek bir harf herhangi 2 örneklerini değiştirerek.
İlave
Siz sadece iki sayıyı birleştirin ve basitleştirin.
acd+ bde= acdbde= abcdde= acebe= abcf= 3910 bazında
Çıkarma
Çıkarmanın her iki kısmında da eşit şekilde görünen tüm sayıları kaldırmanız yeterli. Genişleyen (dönüştürme biçin aagerekli olabilir)
abde- ad= be10'da 18 =
Çarpma işlemi
Bu biraz daha zor.
Diyelim ki acd(13) ile def(56) çarpmak istiyoruz . Önce acddikey olarak düzenleme yapın :
a
c
d
Sonra ilkinden defsonra eklersiniz a:
a def
c
d
Şimdi, c alfabede a'dan daha 2 konumlu olduğundan def, yapmak için alfabeye 2 konum ekleriz fgh. Bu ikinci satıra eklenir.
a def
c fgh
d
Son olarak, d alfabede c'den 1 konum sonradır, bu yüzden fghyapmak için alfabeye 1 konum ekleriz.ghi . Bu üçüncü satıra eklenir.
a def
c fgh
d ghi
Sonra sağın toplamını alırsınız: def+ fgh+ ghi= deffgghhi= deggghhi=deghhhi = deghii= deghj(728)
Başka bir çarpma örneği
Giriş:
bc * de
İlk:
b
c
Sonra
b ef
c
Sonra
b ef
c fg
efİlk satırda yazdığımızı not edin . Bunun nedeni alfabenin ikinci harfiyle bcbaşlıyor bve bbu yüzden de1 harfe kaydırmalıyız , yanief .
Sonra
ef+fg
Çıktı:
eh
Bölünme
Bu, bu zorluğun bir parçası değil çünkü çok karmaşık bir hal alabilir.
Gerçek zorlukların
Programınız veya işlevin, şöyle görünen bir dize olarak girdi alması gerekir:
a + b
Ve çıkmalısınız:
ab
Tabii ki, programınız veya işlev operatörlerin herhangi biri (dilinizin dize veya giriş sınırına kadar) istenilen uzunlukta numaralarını desteklemesi gerekir +, -ya da *. Biraz daha örnek:
Giriş:
ab + bd
Çıktı:
acd
Giriş:
d - ab
Çıktı:
ac
Giriş:
ab * cd
Çıktı:
cf
Notlar:
- Çıktıdaki harflerin sırası önemli değildir, ancak girişteki sayıların içindeki harflerin sırasının artacağını varsayabilirsiniz (bir z'den önce).
- İzleyen bir yeni satır ile girdi alabilir ve izleyen bir yeni satır ile çıktı alabilirsiniz.
- Sen olabilir değil listesi gibi girdi almak
ab,*vebdiçinab * bd. - İngilizce alfabe kullanılır (
abcdefghijklmnopqrstuvwxyz) - Çıktınızın basitleştirilmesi gerekir (
aaizin verilmiyor,bgerekli) - Giriş basitleştirilecektir (
b+c,aa+bbveyaaa+ değilaaaa) - Sen önce bir boşluk ve operatör (gerektirebilir
+,-ya*) veya hiçbiri orada gerektirebilir. - Giriş başına sadece bir operatör olacaktır.
- Çıktı ve girişin hiçbir zaman 2 ^ 27-1 (
abcdefghijklmnopqrstuvwxyz) geçmeyeceğini varsayabilirsiniz. - Bu kod golf , yani bayt cinsinden en kısa cevap kazanır!
bc*de==efghama efghbir 240değil144
bc*deolmalıeh
d is 2 positions later in the alphabet than cbu wright olmamalı mıydı1?That is added to the second row.Aynı cümleyle, öyle değil mithird?