Tạo một thói quen lấy một mảng các khối trong một hệ thống cơ sở số và chuyển đổi chúng thành một mảng các khối trong một hệ thống cơ sở số khác. Cả hệ thống từ và đến đều tùy ý và nên được chấp nhận làm tham số. Mảng đầu vào có thể là độ dài tùy ý (Nếu sử dụng ngôn ngữ mà độ dài mảng không được lưu trữ với mảng, chẳng hạn như C, tham số độ dài sẽ được truyền cho hàm).
Đây là cách nó nên hoạt động:
fromArray = [1, 1]
fromBase = 256
toBase = 16
result = convertBase(fromArray, fromBase, toBase);
Cái nào sẽ trả về [0, 1, 0, 1]
hoặc có thể [1, 0, 1]
(hàng đầu 0
là tùy chọn vì chúng không thay đổi giá trị của câu trả lời).
Dưới đây là một số vectơ kiểm tra:
Vector kiểm tra danh tính
fromArray = [1, 2, 3, 4] fromBase = 16 toBase = 16 result = [1, 2, 3, 4]
Vector thử nghiệm tầm thường
fromArray = [1, 0] fromBase = 10 toBase = 100 result = [10]
Vector thử nghiệm lớn
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]
Vector thử nghiệm thực sự lớn
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]
Vector không đều
fromArray = [41, 42, 43] fromBase = 256 toBase = 36 result = [1, 21, 29, 22, 3]
Các tiêu chí / quy tắc khác:
Tất cả các biến số nguyên phải vừa trong một số nguyên có chữ ký 32 bit tiêu chuẩn cho tất cả các phạm vi đầu vào lành mạnh.
Bạn có thể chuyển đổi thành một đại diện trung gian, miễn là trung gian đó không có gì khác ngoài một mảng gồm các số nguyên có chữ ký 32 bit.
Sẽ xử lý các căn cứ từ 2 đến 256. Không có nhu cầu hỗ trợ các căn cứ cao hơn thế (nhưng nếu bạn muốn, bằng mọi cách).
Mong đợi để xử lý kích thước đầu vào và đầu ra ít nhất lên đến 1000 yếu tố. Một giải pháp chia tỷ lệ thành 2 ^ 32-1 phần tử sẽ tốt hơn, nhưng 1000 là tốt.
Điều này không nhất thiết là về việc có mã ngắn nhất sẽ đáp ứng các quy tắc này. Đó là về việc có mã sạch nhất và thanh lịch nhất.
Bây giờ, điều này không chính xác tầm thường để làm, vì vậy một câu trả lời gần như có thể được chấp nhận!