7
混合ベース変換
バックグラウンド ここのほとんどの人は、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。 非空です。IO 入力番号が指定された基数で有効であること(つまり、その基数よりも大きい数字がないこと)。 D空(を表す0)にすることも、先頭にゼロを付けることもできます。出力に先行ゼロが含まれていてはなりません。特に、表す結果0は空のリストとして返される必要があります。 組み込みまたはサードパーティのベース変換関数を使用しないでください。 これはコードゴルフで、最短の回答(バイト単位)が勝ちです。 例 D I O Result [1,0,0] [10] [2] [1,1,0,0,1,0,0] [1,0,0] [2] …