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 aabbpeut être raccourci bcen 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= 39en base 10
Soustraction
Supprimez simplement tous les chiffres apparaissant également dans les deux parties de la soustraction. Une extension (conversion ben 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 acdverticalement:
a
c
d
Ensuite, vous ajoutez defaprè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 efsur la première ligne. C'est parce que bccommence par b, et best la deuxième lettre de l'alphabet, nous devons donc décaler ded'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,*etbdpourab * bd. - L'alphabet anglais est utilisé (
abcdefghijklmnopqrstuvwxyz) - Votre sortie doit être simplifiée (
aan'est pas autorisée,best obligatoire) - L'entrée sera simplifiée (
b+c, pasaa+bbouaa+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==efghmais ce efghn'est 240pas le cas144
bc*dedevrait êtreeh
d is 2 positions later in the alphabet than cest 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?