バックグラウンド
ここのほとんどの人は、10進数、2進数、16進数、8進数などのいくつかの基本システムに精通している必要があります。たとえば、16進数システムでは、番号12345 16は次を表します。
1*16^4 + 2*16^3 + 3*16^2 + 4*16^1 + 5*16^0
通常、ベース(ここでは16
)が数字から数字に変わることを期待していないことに注意してください。
これらの通常の位置システムを一般化すると、数字ごとに異なる数値ベースを使用できます。たとえば、10進法と2進法を交互に使用している場合(最下位の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
と出力ベースO
、で表される整数変換D
ベースからI
ベースにしますO
。STDIN、ARGV、または関数引数を介して入力を取得し、結果を返すか、STDOUTに出力できます。
あなたは仮定するかもしれません:
I
およびの数値O
がすべてより大きいこと1
。- 非空です。
I
O
- 入力番号が指定された基数で有効であること(つまり、その基数よりも大きい数字がないこと)。
D
空(を表す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]