Фон
Большинство людей здесь должны быть знакомы с несколькими базовыми системами: десятичной, двоичной, шестнадцатеричной, восьмеричной. Например, в шестнадцатеричной системе число 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]
. Самая правая основа соответствует наименее значащей цифре. Затем вы проходите через базы (слева) и цифры (слева), оборачиваясь, если цифр больше, чем баз.
Для дальнейшего чтения см. Википедию .
Соревнование
Напишите программу или функцию, которая, учитывая список цифр 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]