Фон
Большинство людей здесь должны быть знакомы с несколькими базовыми системами: десятичной, двоичной, шестнадцатеричной, восьмеричной. Например, в шестнадцатеричной системе число 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]