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