Aus dem Wikipedia-Artikel :
Die Ortsarithmetik (lateinisch arithmeticæ localis) ist das additive (nicht-positionsbezogene) binäre Zahlensystem, das John Napier in seiner Abhandlung Rabdology (1617) symbolisch und auf einem schachbrettartigen Gitter als Berechnungstechnik erforschte.
Was?
Mit Ortsziffern können Zahlen mit Buchstaben des Alphabets geschrieben werden.
Die Binärnotation war noch nicht standardisiert, weshalb Napier für die Darstellung von Binärzahlen sogenannte Positionsnummern verwendete. Das Napier-System verwendet die Zeichenwertnotation zur Darstellung von Zahlen. Es werden aufeinanderfolgende Buchstaben des englischen Alphabets verwendet, um aufeinanderfolgende Zweierpotenzen darzustellen: a = 2 ^ 0 = 1, b = 2 ^ 1 = 2, c = 2 ^ 2 = 4, d = 2 ^ 3 = 8, e = 2 ^ 4 = 16 und so weiter.
Ein Beispiel
ab
= 1 + 2 = 3 in der Basis 10
aabb
= 1 + 1 + 2 + 2 = 6 in der Basis 10
Beachten Sie, dass aabb
dies bc
durch Ersetzen von 2 Instanzen eines Buchstabens durch eine höhere verkürzt werden kann .
Zusatz
Sie verketten einfach die beiden Zahlen und vereinfachen.
acd
+ bde
= acdbde
= abcdde
= acebe
= abcf
= 39
in der Basis 10
Subtraktion
Entfernen Sie einfach alle Ziffern, die in beiden Teilen der Subtraktion gleich erscheinen. Das Erweitern (Konvertieren b
in aa
) kann erforderlich sein
abde
- ad
= be
= 18 in der Basis 10
Multiplikation
Das ist etwas schwieriger.
Nehmen wir an, wir wollen acd
(13) mit def
(56) multiplizieren . Zuerst ordnen Sie acd
vertikal an:
a
c
d
Dann fügen Sie def
nach dem ersten hinzu a
:
a def
c
d
Jetzt ist c 2 Stellen später im Alphabet als a, also addieren wir 2 Stellen im Alphabet, um def
zu machen fgh
. Das wird zur zweiten Zeile hinzugefügt.
a def
c fgh
d
Schließlich ist d 1 Stelle später im Alphabet als c, also addieren wir 1 Stelle im Alphabet, um fgh
zu machen ghi
. Das wird der dritten Zeile hinzugefügt.
a def
c fgh
d ghi
Dann nimmst du die Summe von rechts: def
+ fgh
+ ghi
= deffgghhi
= deggghhi
= deghhhi
= deghii
= deghj
(728)
Ein weiteres Beispiel für die Multiplikation
Eingang:
bc * de
Zuerst:
b
c
Dann
b ef
c
Dann
b ef
c fg
Beachten Sie, dass wir ef
in der ersten Zeile notiert haben. Das liegt daran, dass es mit bc
beginnt b
und b
der zweite Buchstabe im Alphabet ist. Wir müssen also um einen de
Buchstaben verschieben, damit es wird ef
.
Dann
ef+fg
Ausgabe:
eh
Teilung
Dies ist nicht Teil dieser Herausforderung, da es sehr komplex werden kann.
Deine eigentliche Herausforderung
Ihr Programm oder Ihre Funktion muss Eingaben als Zeichenfolge annehmen, die wie folgt aussieht:
a + b
Und Sie müssen Folgendes ausgeben:
ab
Natürlich muss Ihr Programm oder Funktionsnummern beliebiger Länge unterstützen (bis auf den String oder Eingabegrenze Ihrer Sprache) mit einem der Betreiber +
, -
oder *
. Einige weitere Beispiele:
Eingang:
ab + bd
Ausgabe:
acd
Eingang:
d - ab
Ausgabe:
ac
Eingang:
ab * cd
Ausgabe:
cf
Anmerkungen:
- Die Reihenfolge der Buchstaben in der Ausgabe spielt keine Rolle, aber Sie können immer davon ausgehen, dass die Reihenfolge der Buchstaben in den Zahlen in der Eingabe aufsteigend ist (a vor z).
- Sie können Eingaben mit einem nachgestellten Zeilenumbruch und Ausgaben mit einem nachgestellten Zeilenumbruch vornehmen.
- Sie können nicht Eingabe als eine Liste von nehmen
ab
,*
undbd
fürab * bd
. - Das englische Alphabet wird verwendet (
abcdefghijklmnopqrstuvwxyz
) - Ihre Ausgabe muss vereinfacht werden (
aa
ist nicht erlaubt,b
ist erforderlich) - Die Eingabe wird vereinfacht (
b
+c
, nichtaa
+bb
oderaa
+aaaa
) - Sie können einen Platz benötigen , bevor und den Betreiber (
+
,-
oder*
), oder man kann es keine sein müssen. - Es wird nur einen Operator pro Eingabe geben.
- Sie können davon ausgehen, dass die Ausgabe und die Eingabe niemals über 2 ^ 27-1 (
abcdefghijklmnopqrstuvwxyz
) hinausgehen werden. - Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes!
bc*de==efgh
aber efgh
ist 240
nicht144
bc*de
sollte seineh
d is 2 positions later in the alphabet than c
ist das wright sollte es nicht sein1
?That is added to the second row.
im selben Satz, sollte es nicht seinthird
?