Kredi
Bu meydan okuma miles kaynaklıdır .
Bir giriş dizesinin CRC32 karmasını hesaplayan bir işlev oluşturun. Giriş, herhangi bir uzunlukta bir ASCII dizesi olacaktır. Çıktı, o giriş dizesinin CRC32 karması olacaktır.
açıklama
CRC32 ve diğer CRC'nin algoritmaları esasen aynıdır, bu nedenle burada sadece CRC3 gösterilecektir.
İlk olarak, aslında bir 4-bit [n + 1] tamsayı olan jeneratör polinomuna sahipsiniz (CRC32'de 33-bit olacaktır).
Bu örnekte, jeneratör polinomu 1101
.
Sonra, bu örnekte, karma olacak dizeye sahip olacaksınız 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^
Elde edilen geri kalan (21)
bölgesi 1 olan, sıfır olduğu zaman, 001
, CRC3 karma sonucu olacaktır.
gözlük
- Jeneratör polinomu
0x104C11DB7
, veya0b100000100110000010001110110110111
, veya4374732215
. - Giriş, bir dize veya bir tamsayı listesi veya başka bir makul biçim olabilir.
- Çıktı bir onaltılık dize veya yalnızca bir tam sayı veya başka bir makul biçim olabilir.
- CRC32 karmasını hesaplayan yerleşik öğelere izin verilmez.
Hedef
Kod golfü için standart kurallar geçerlidir.
En kısa kod kazanır.
Test senaryoları
input output (hex)
"code-golf" 147743960 08CE64D8
"jelly" 1699969158 65537886
"" 0 00000000