Titoli di coda
Questa sfida è nata da @miles .
Creare una funzione che calcola l'hash CRC32 di una stringa di input. L'input sarà una stringa ASCII di qualsiasi lunghezza. L'output sarà l'hash CRC32 di quella stringa di input.
Spiegazione
L'algoritmo di CRC32 e altri CRC sono essenzialmente gli stessi, quindi solo CRC3 verrà dimostrato qui.
Innanzitutto, hai il polinomio del generatore, che in realtà è un numero intero [n + 1] a 4 bit (sarebbe 33 bit in CRC32).
In questo esempio, il polinomio del generatore è 1101
.
Quindi, avrai la stringa da sottoporre a hash, che in questo esempio sarebbe 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^
Il resto ottenuto a (21)
, quando la regione 1 è zero, ovvero 001
sarebbe il risultato dell'hash CRC3.
Specifiche
- Il polinomio del generatore è
0x104C11DB7
, o0b100000100110000010001110110110111
, o4374732215
. - L'input può essere una stringa o un elenco di numeri interi o qualsiasi altro formato ragionevole.
- L'output può essere una stringa esadecimale o solo un numero intero o qualsiasi altro formato ragionevole.
- Gli incorporati che calcolano l'hash CRC32 non sono consentiti.
Obbiettivo
Si applicano le regole standard per il code-golf .
Vince il codice più corto.
Casi test
input output (hex)
"code-golf" 147743960 08CE64D8
"jelly" 1699969158 65537886
"" 0 00000000