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 aabb
için kısaltılabilir bc
daha 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
= 39
10 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 b
için aa
gerekli olabilir)
abde
- ad
= be
10'da 18 =
Çarpma işlemi
Bu biraz daha zor.
Diyelim ki acd
(13) ile def
(56) çarpmak istiyoruz . Önce acd
dikey olarak düzenleme yapın :
a
c
d
Sonra ilkinden def
sonra 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 fgh
yapmak 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 bc
başlıyor b
ve b
bu yüzden de
1 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
,*
vebd
içinab * bd
. - İngilizce alfabe kullanılır (
abcdefghijklmnopqrstuvwxyz
) - Çıktınızın basitleştirilmesi gerekir (
aa
izin verilmiyor,b
gerekli) - Giriş basitleştirilecektir (
b
+c
,aa
+bb
veyaaa
+ 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==efgh
ama efgh
bir 240
değil144
bc*de
olmalıeh
d is 2 positions later in the alphabet than c
bu wright olmamalı mıydı1
?That is added to the second row.
Aynı cümleyle, öyle değil mithird
?