De l'article Wikipedia :
L'arithmétique de localisation (Latin arithmeticæ localis) est les systèmes numériques binaires additifs (non positionnels) que John Napier a explorés comme technique de calcul dans son traité Rabdology (1617), à la fois symboliquement et sur une grille de type échiquier.
Quelle?
Les chiffres d'emplacement sont un moyen d'écrire des nombres en utilisant les lettres de l'alphabet.
La notation binaire n'avait pas encore été normalisée, donc Napier a utilisé ce qu'il a appelé des chiffres d'emplacement pour représenter des nombres binaires. Le système de Napier utilise la notation de valeur de signe pour représenter les nombres; il utilise des lettres successives de l'alphabet anglais pour représenter des puissances successives de deux: a = 2 ^ 0 = 1, b = 2 ^ 1 = 2, c = 2 ^ 2 = 4, d = 2 ^ 3 = 8, e = 2 ^ 4 = 16 et ainsi de suite.
Un exemple
ab
= 1 + 2 = 3 en base 10
aabb
= 1 + 1 + 2 + 2 = 6 en base 10
Notez que cela aabb
peut être raccourci bc
en remplaçant 2 instances d'une lettre par une plus élevée.
Une addition
Vous venez de concaténer les deux nombres et de simplifier.
acd
+ bde
= acdbde
= abcdde
= acebe
= abcf
= 39
en base 10
Soustraction
Supprimez simplement tous les chiffres apparaissant également dans les deux parties de la soustraction. Une extension (conversion b
en aa
) peut être nécessaire
abde
- ad
= be
= 18 en base 10
Multiplication
C'est un peu plus difficile.
Disons que nous voulons multiplier acd
(13) par def
(56). Vous organisez d'abord acd
verticalement:
a
c
d
Ensuite, vous ajoutez def
après le premier a
:
a def
c
d
Maintenant, c est 2 positions plus tard dans l'alphabet que a, donc nous ajoutons 2 positions dans l'alphabet def
à faire fgh
. Cela est ajouté à la deuxième ligne.
a def
c fgh
d
Enfin, d est 1 position plus tard dans l'alphabet que c, nous ajoutons donc 1 position dans l'alphabet fgh
à faire ghi
. Cela est ajouté à la troisième ligne.
a def
c fgh
d ghi
Ensuite, vous prenez la somme de la droite: def
+ fgh
+ ghi
= deffgghhi
= deggghhi
= deghhhi
= deghii
= deghj
(728)
Un autre exemple de multiplication
Contribution:
bc * de
Première:
b
c
ensuite
b ef
c
ensuite
b ef
c fg
Notez que nous avons écrit ef
sur la première ligne. C'est parce que bc
commence par b
, et b
est la deuxième lettre de l'alphabet, nous devons donc décaler de
d'une lettre, donc cela devient ef
.
ensuite
ef+fg
Sortie:
eh
Division
Cela ne fait pas partie de ce défi, car cela peut devenir très complexe.
Votre véritable défi
Votre programme ou fonction doit prendre l'entrée comme une chaîne qui ressemble à ceci:
a + b
Et vous devez sortir:
ab
Bien sûr, votre programme ou la fonction doit prendre en charge un nombre de longueur arbitraire (jusqu'à la chaîne ou de limiter l' entrée de votre langue) avec l' un des opérateurs +
, -
ou *
. Quelques exemples supplémentaires:
Contribution:
ab + bd
Sortie:
acd
Contribution:
d - ab
Sortie:
ac
Contribution:
ab * cd
Sortie:
cf
Remarques:
- L'ordre des lettres dans la sortie n'a pas d'importance, mais vous pouvez toujours supposer que l'ordre des lettres en chiffres dans l'entrée sera croissant (a avant z).
- Vous pouvez prendre une entrée avec une nouvelle ligne de fin et une sortie avec une nouvelle ligne de fin.
- Vous ne pouvez pas prendre la saisie comme une liste de
ab
,*
etbd
pourab * bd
. - L'alphabet anglais est utilisé (
abcdefghijklmnopqrstuvwxyz
) - Votre sortie doit être simplifiée (
aa
n'est pas autorisée,b
est obligatoire) - L'entrée sera simplifiée (
b
+c
, pasaa
+bb
ouaa
+aaaa
) - Vous pouvez avoir besoin d' un espace avant et l'opérateur (
+
,-
ou*
), ou vous pouvez exiger qu'il y ait aucune. - Il n'y aura qu'un seul opérateur par entrée.
- Vous pouvez supposer que la sortie et l'entrée ne dépasseront jamais 2 ^ 27-1 (
abcdefghijklmnopqrstuvwxyz
) - C'est le code-golf , donc la réponse la plus courte en octets l'emporte!
bc*de==efgh
mais ce efgh
n'est 240
pas le cas144
bc*de
devrait êtreeh
d is 2 positions later in the alphabet than c
est ce Wright? ne devrait-il pas en être ainsi1
?That is added to the second row.
sur la même phrase, n'est-ce pasthird
?