Створіть процедуру, яка приймає масив блоків в одній числовій базовій системі та конвертує їх у масив блоків в іншій числовій базовій системі. І від, і до систем є довільними і їх слід сприймати як параметр. Вхідний масив може бути довільною довжиною (Якщо використовується мова, де довжини масиву не зберігаються з масивом, наприклад, С, параметр довжини повинен бути переданий функції).
Ось як це має працювати:
fromArray = [1, 1]
fromBase = 256
toBase = 16
result = convertBase(fromArray, fromBase, toBase);
Що слід повернути [0, 1, 0, 1]
або можливо [1, 0, 1]
(провідні 0
s необов’язкові, оскільки вони не змінюють значення відповіді).
Ось кілька тестових векторів:
Вектор тестування особи
fromArray = [1, 2, 3, 4] fromBase = 16 toBase = 16 result = [1, 2, 3, 4]
Тривіальний тестовий вектор
fromArray = [1, 0] fromBase = 10 toBase = 100 result = [10]
Великий тестовий вектор
fromArray = [41, 15, 156, 123, 254, 156, 141, 2, 24] fromBase = 256 toBase = 16 result = [2, 9, 0, 15, 9, 12, 7, 11, 15, 14, 9, 12, 8, 13, 0, 2, 1, 8]
Дійсно великий тестовий вектор
fromArray = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] fromBase = 2 toBase = 10 result = [1, 2, 3, 7, 9, 4, 0, 0, 3, 9, 2, 8, 5, 3, 8, 0, 2, 7, 4, 8, 9, 9, 1, 2, 4, 2, 2, 3]
Нерівний базовий вектор
fromArray = [41, 42, 43] fromBase = 256 toBase = 36 result = [1, 21, 29, 22, 3]
Інші критерії / правила:
Усі цілі змінні повинні розміщуватися в стандартному цілому 32-бітному цілому цілому для всіх розумних вхідних діапазонів.
Ви можете конвертувати в представництво посередника, якщо посередник - це не що інше, як масив із 32-бітових цілих підписаних чисел.
Розраховуйте обробляти бази від 2 до 256. Немає потреби підтримувати більш високі бази, ніж це (але якщо ви хочете, будь-якими способами).
Розраховуйте обробляти вхідні та вихідні розміри принаймні до 1000 елементів. Рішення, яке масштабує до 2 ^ 32-1 елементів, було б краще, але 1000 - просто чудово.
Це не обов'язково про те, щоб мати найкоротший код, який відповідає цим правилам. Йдеться про наявність найчистішого та найелегантнішого коду.
Тепер це не зовсім тривіально, тому відповідь, що майже працює, може бути прийнята!