tło
Większość ludzi tutaj powinna znać kilka podstawowych systemów: dziesiętny, binarny, szesnastkowy, ósemkowy. Na przykład w systemie szesnastkowym, numer 12345 16 stanowiłoby
1*16^4 + 2*16^3 + 3*16^2 + 4*16^1 + 5*16^0
Zauważ, że zazwyczaj nie oczekujemy, że podstawa (tutaj 16
) zmieni się z cyfry na cyfrę.
Uogólnienie tych zwykłych systemów pozycyjnych pozwala na użycie innej podstawy liczbowej dla każdej cyfry. Np. Jeśli zmienilibyśmy system dziesiętny i dwójkowy (zaczynając od podstawy 10 w najmniej znaczącej cyfrze), liczba 190315 [2,10] reprezentowałaby
1*10*2*10*2*10 + 9*2*10*2*10 + 0*10*2*10 + 3*2*10 + 1*10 + 5 = 7675
Oznaczamy tę bazę jako [2,10]
. Najbardziej wysunięta na prawo podstawa odpowiada najmniej znaczącej cyfrze. Następnie przechodzisz przez bazy (po lewej), przechodząc przez cyfry (po lewej), owijając się, jeśli jest więcej cyfr niż baz.
Więcej informacji można znaleźć na Wikipedii .
Wyzwanie
Napisz program lub funkcję, która na podstawie listy cyfr D
podstawy wejściowej I
i bazy wyjściowej O
przekształca liczbę całkowitą reprezentowaną przez D
z bazy I
na bazę O
. Możesz pobrać dane wejściowe za pomocą argumentu STDIN, ARGV lub funkcji i albo zwrócić wynik, albo wydrukować go do STDOUT.
Możesz założyć:
- że numery w
I
iO
są większe niż1
. I
iO
są niepuste.- czy numer wejściowy jest prawidłowy w danej bazie (tj. żadna cyfra nie jest większa niż jej podstawa).
D
może być pusty (reprezentujący 0
) lub może mieć zera na początku. Twój wynik nie powinien zawierać wiodących zer. W szczególności wynik reprezentujący 0
powinien zostać zwrócony jako pusta lista.
Nie wolno używać żadnych wbudowanych ani zewnętrznych funkcji konwersji bazowej.
To jest kod golfowy, wygrywa najkrótsza odpowiedź (w bajtach).
Przykłady
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] []
[]
jeśli wejście jest[0]