Hintergrund
Die meisten Leute hier sollten mit mehreren Basissystemen vertraut sein: dezimal, binär, hexadezimal, oktal. ZB im Hexadezimalsystem würde die Zahl 12345 16 darstellen
1*16^4 + 2*16^3 + 3*16^2 + 4*16^1 + 5*16^0
Beachten Sie, dass wir normalerweise nicht erwarten, dass sich die Basis (hier 16
) von Ziffer zu Ziffer ändert.
Eine Verallgemeinerung dieser üblichen Positionssysteme ermöglicht es Ihnen, für jede Ziffer eine andere numerische Basis zu verwenden. Wenn wir beispielsweise zwischen Dezimal- und Binärsystem wechseln würden (beginnend mit der Basis 10 in der niedrigstwertigen Ziffer), würde dies die Zahl 190315 [2,10] darstellen
1*10*2*10*2*10 + 9*2*10*2*10 + 0*10*2*10 + 3*2*10 + 1*10 + 5 = 7675
Wir bezeichnen diese Basis als [2,10]
. Die Basis ganz rechts entspricht der niedrigstwertigen Ziffer. Dann gehen Sie durch die Basen (nach links), während Sie durch die Ziffern (nach links) gehen, und wickeln sich um, wenn es mehr Ziffern als Basen gibt.
Weitere Informationen finden Sie in Wikipedia .
Die Herausforderung
Schreiben Sie ein Programm oder eine Funktion, die anhand einer Liste von Ziffern, D
einer Eingabe- I
und einer Ausgabebasis O
die Ganzzahl, die durch dargestellt wird, D
von Basis I
zu Basis konvertiert O
. Sie können Eingaben über STDIN, ARGV oder Funktionsargumente vornehmen und das Ergebnis entweder zurückgeben oder an STDOUT ausgeben.
Sie können annehmen:
- dass die Zahlen in
I
undO
alle größer sind als1
. - die
I
undO
sind nicht leer. - dass die eingegebene Nummer in der angegebenen Basis gültig ist (dh keine Ziffer größer als die Basis).
D
könnte leer sein (darstellen 0
) oder führende Nullen haben. Ihre Ausgabe sollte keine führenden Nullen enthalten. Insbesondere ein Ergebnis darstellen0
als leere Liste zurückgegeben werden.
Sie dürfen keine integrierten oder Basis-Konvertierungsfunktionen von Drittanbietern verwenden.
Dies ist Codegolf, die kürzeste Antwort (in Bytes) gewinnt.
Beispiele
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] []
[]
wenn die Eingabe ist[0]