Tín dụng
Thử thách này bắt nguồn từ @miles .
Tạo một hàm tính toán hàm băm CRC32 của chuỗi đầu vào. Đầu vào sẽ là một chuỗi ASCII có độ dài bất kỳ. Đầu ra sẽ là hàm băm CRC32 của chuỗi đầu vào đó.
Giải trình
Thuật toán của CRC32 và CRC khác về cơ bản là giống nhau, vì vậy chỉ CRC3 sẽ được trình bày ở đây.
Đầu tiên, bạn có đa thức trình tạo, thực sự là số nguyên 4 bit [n + 1] (sẽ là 33 bit trong CRC32).
Trong ví dụ này, đa thức máy phát là 1101
.
Sau đó, bạn sẽ có chuỗi được băm, trong ví dụ này sẽ là 00010010111100101011001101
.
00010010111100101011001101|000 (1) append three [n] "0"s
1101 (2) align with highest bit
00001000111100101011001101|000 (3) XOR (1) and (2)
1101 (4) align with highest bit
00000101111100101011001101|000 (5) XOR (3) and (4)
1101 (6) align with highest bit
00000011011100101011001101|000 (7) XOR (5) and (6)
1101 (8) align with highest bit
00000000001100101011001101|000 (9) XOR (7) and (8)
1101 (10) align with highest bit
00000000000001101011001101|000 (11) XOR (9) and (10)
1101 (12) align with highest bit
00000000000000000011001101|000 (13) XOR (11) and (12)
1101 (14) align with highest bit
00000000000000000000011101|000 (15) XOR (13) and (14)
1101 (16) align with highest bit
00000000000000000000000111|000 (17) XOR (15) and (16)
110 1 (18) align with highest bit
00000000000000000000000001|100 (19) XOR (17) and (18)
1 101 (20) align with highest bit
00000000000000000000000000|001 (21) XOR (19) and (20)
^--------REGION 1--------^ ^2^
Phần còn lại thu được tại (21)
, khi vùng 1 bằng 0, đó là 001
kết quả của hàm băm CRC3.
Thông số kỹ thuật
- Đa thức máy phát là
0x104C11DB7
, hoặc0b100000100110000010001110110110111
, hoặc4374732215
. - Đầu vào có thể là một chuỗi hoặc một danh sách các số nguyên hoặc bất kỳ định dạng hợp lý nào khác.
- Đầu ra là một chuỗi hex hoặc chỉ là một số nguyên hoặc bất kỳ định dạng hợp lý nào khác.
- Không được phép tích hợp tính toán băm CRC32.
Mục tiêu
Quy tắc tiêu chuẩn cho mã golf áp dụng.
Mã ngắn nhất sẽ thắng.
Các trường hợp thử nghiệm
input output (hex)
"code-golf" 147743960 08CE64D8
"jelly" 1699969158 65537886
"" 0 00000000