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