로부터 Wikipedia 기사 :
위치 산술 (Latin arithmeticæ localis)은 부가 적 (비 포지션) 이진수 시스템으로, 존 네이피어는 그의 논문 Rabdology (1617)에서 계산 기법으로 상징적으로나 체스 판과 같은 그리드에서 탐구 한 기술입니다.
뭐?
위치 숫자는 알파벳 문자를 사용하여 숫자를 쓰는 방법입니다.
이진 표기법은 아직 표준화되지 않았기 때문에 Napier는 이진수를 나타 내기 위해 위치 번호라고하는 것을 사용했습니다. 네이피어 시스템은 부호 값 표기법을 사용하여 숫자를 나타냅니다. 영어 알파벳의 연속 문자를 사용하여 연속 2의 거듭 제곱을 나타냅니다 .a = 2 ^ 0 = 1, b = 2 ^ 1 = 2, c = 2 ^ 2 = 4, d = 2 ^ 3 = 8, e = 2 ^ 4 = 16 등.
예
ab 밑 10에서 1 + 2 = 3
aabb 10 진법에서 1 + 1 + 2 + 2 = 6
참고 aabb로 단축 할 수있다 bc높은 하나 편지의 두 인스턴스를 교체하여.
부가
두 숫자를 연결하고 단순화하면됩니다.
acd밑 10에서 + bde= acdbde= abcdde= acebe= abcf=39
빼기
빼기의 두 부분에 똑같이 나타나는 모든 숫자를 제거하십시오. 확장 (변환 b에 aa필요할 수 있음)
abde10 진 -- ad= be18
곱셈
조금 더 어렵다.
acd(13)에 def(56) 을 곱하고 싶다고합시다 . 먼저 acd수직으로 정렬하십시오 .
a
c
d
그런 다음 def첫 번째 다음에 추가 하십시오 a.
a def
c
d
이제 c는 a보다 알파벳에서 2 자리 늦습니다. 따라서 알파벳에서 2 자리를 더해 def만듭니다 fgh. 두 번째 행에 추가됩니다.
a def
c fgh
d
마지막으로 d는 c보다 알파벳에서 1 자리 늦습니다. 따라서 알파벳에서 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)을 넘지 않는다고 가정 할 수 있습니다. - 이것은 code-golf 이므로 바이트 단위의 최단 답변이 이깁니다!
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않습니까?