배경
여기에있는 대부분의 사람들은 십진, 이진, 16 진, 8 진 등 몇 가지 기본 시스템에 익숙해야합니다. 예를 들어 16 진수 시스템에서 숫자 12345 16 은
1*16^4 + 2*16^3 + 3*16^2 + 4*16^1 + 5*16^0
일반적으로 기본 (여기서는 16
)이 숫자에서 숫자로 변경 될 것으로 예상하지 않습니다 .
이러한 일반적인 위치 시스템의 일반화를 통해 각 숫자에 대해 다른 숫자 기반을 사용할 수 있습니다. 예를 들어 십진법과 이진법을 번갈아 가면서 (최소 수 자릿수의 10 진수로 시작) 숫자 190315 [2,10] 은
1*10*2*10*2*10 + 9*2*10*2*10 + 0*10*2*10 + 3*2*10 + 1*10 + 5 = 7675
이 기준을로 표시합니다 [2,10]
. 가장 오른쪽은 가장 작은 자릿수에 해당합니다 . 그런 다음 자릿수보다 왼쪽에있는 자릿수를 기준으로 자릿수보다 많은 자릿수가 있으면 왼쪽을 기준으로 자릅니다.
자세한 내용은 Wikipedia를 참조하십시오 .
도전
자릿수 목록에 D
입력 기수 I
와 출력 기수가 주어지면 base 에서 base 로 O
표시되는 정수를 변환 하는 프로그램 또는 함수를 작성하십시오 . STDIN, ARGV 또는 함수 인수를 통해 입력을 받아 결과를 리턴하거나 STDOUT에 인쇄 할 수 있습니다.D
I
O
당신은 가정 할 수 있습니다 :
- 의 숫자 것을
I
하고O
보다 모두 큰1
. I
및O
비 비어 있습니다.- 주어진 숫자에서 입력 번호가 유효 함 (즉, 숫자보다 큰 자릿수 없음).
D
비어 있거나 (을 나타내는 0
) 선행 0을 가질 수 있습니다. 출력에는 선행 0이 포함되지 않아야합니다. 특히, 나타내는 결과는 0
빈 목록으로 반환되어야합니다.
내장 또는 타사 기본 변환 기능을 사용해서는 안됩니다.
이것은 코드 골프이며, 가장 짧은 대답 (바이트)이 이깁니다.
예
D I O Result
[1,0,0] [10] [2] [1,1,0,0,1,0,0]
[1,0,0] [2] [10] [4]
[1,9,0,3,1,5] [2,10] [10] [7,6,7,5]
[1,9,0,3,1,5] [2,10] [4,3,2] [2,0,1,1,0,1,3,0,1]
[52,0,0,0,0] [100,7,24,60,60] [10] [3,1,4,4,9,6,0,0]
[0,2,10] [2,4,8,16] [42] [1,0]
[] [123,456] [13] []
[0,0] [123,456] [13] []
[]
경우 생성하고 싶습니다.[0]