Зі статті Вікіпедії :
Арифметична локація (лат. Arithmeticæ localis) - це додаткова (не позиційна) двійкова система числення, яку Джон Нап'є досліджував як техніку обчислень у своєму трактаті «Рабдологія» (1617), як символічно, так і на шаховій дошці.
Що?
Локальні цифри - це спосіб написання чисел за допомогою букв алфавіту.
Бінарні позначення ще не були стандартизовані, тому Нап'є використовував те, що він називав цифрами місцеположення, для позначення двійкових чисел. Система Napier використовує позначення знакових знаків для представлення чисел; він використовує послідовні літери з англійського алфавіту для подання послідовних сил двох: a = 2 ^ 0 = 1, b = 2 ^ 1 = 2, c = 2 ^ 2 = 4, d = 2 ^ 3 = 8, e = 2 ^ 4 = 16 тощо.
Приклад
ab = 1 + 2 = 3 в основі 10
aabb = 1 + 1 + 2 + 2 = 6 в основі 10
Зауважте, що aabbйого можна скоротити bc, замінивши будь-які два екземпляри листа на більш високий.
Доповнення
Ви просто з'єднаєте два числа і спростіть.
acd+ bde= acdbde= abcdde= acebe= abcf= 39в базі 10
Віднімання
Просто видаліть усі цифри, які однаково відображаються в обох частинах віднімання. Розширення (перетворення bна aa) може знадобитися
abde- ad= be= 18 в основі 10
Множення
Це трохи складніше.
Скажімо, ми хочемо помножити acd(13) на def(56). Спочатку розташуйте acdвертикально:
a
c
d
Потім ви додаєте defпісля першого a:
a def
c
d
Тепер c є на 2 позиції пізніше в алфавіті, ніж a, тому ми додаємо 2 позиції в алфавіті, defщоб зробити fgh. Це додано до другого ряду.
a def
c fgh
d
Нарешті, d на 1 позицію в алфавіті пізніше c, тому ми додаємо 1 позицію в алфавіті fghдля створення ghi. Це додано до третього ряду.
a def
c fgh
d ghi
Тоді ви берете суму права: def+ fgh+ ghi= deffgghhi= deggghhi= deghhhi= deghii= deghj(728)
Ще один приклад множення
Вхід:
bc * de
Спочатку:
b
c
Потім
b ef
c
Потім
b ef
c fg
Зауважте, що ми записали efв першому рядку. Це тому, що bcпочинається з bі bє другою літерою в алфавіті, тому нам потрібно зрушити deна 1 букву, так і стає ef.
Потім
ef+fg
Вихід:
eh
Відділ
Це не є частиною цього виклику, оскільки воно може стати дуже складним.
Ваш справжній виклик
Ваша програма чи функція повинні сприймати дані як рядок, який виглядає приблизно так:
a + b
І ви повинні вивести:
ab
Звичайно, ваша програма або функція повинна підтримувати число довільної довжини (до рядка або вхідного межі вашої мови) з будь-яким з операторів +, -або *. Ще кілька прикладів:
Вхід:
ab + bd
Вихід:
acd
Вхід:
d - ab
Вихід:
ac
Вхід:
ab * cd
Вихід:
cf
Примітки:
- Порядок букв на виході не має значення, але ви завжди можете припустити, що порядок букв у цифрах на вході буде зростати (a до z).
- Ви можете взяти вхід із зворотним новим рядком та вихід із заднім рядком.
- Ви можете НЕ приймати вхідний сигнал у вигляді списку
ab,*іbdдляab * bd. - Використовується англійський алфавіт (
abcdefghijklmnopqrstuvwxyz) - Ваш вихід повинен бути спрощений (
aaне дозволено,bпотрібно) - Введення буде спрощено (
b+c, неaa+bbабоaa+aaaa) - Вам може знадобитися простір перед і оператор (
+,-або*), або може знадобитися не бути жодного. - Буде лише один оператор на вхід.
- Ви можете припустити, що вихід і вхід ніколи не перевищуватимуть 2 ^ 27-1 (
abcdefghijklmnopqrstuvwxyz) - Це код-гольф , тому найкоротша відповідь у байтах виграє!
bc*de==efghале efghце 240не так144
bc*deмає бутиeh
d is 2 positions later in the alphabet than cце Райт? чи не повинно бути1?That is added to the second row.в тому ж реченні, чи не має бутиthird?