ক্রেডিট
এই চ্যালেঞ্জটি @ মাইল থেকে উদ্ভূত হয়েছিল ।
একটি ফাংশন তৈরি করুন যা কোনও ইনপুট স্ট্রিংয়ের সিআরসি 32 হ্যাশ গণনা করে। ইনপুটটি কোনও দৈর্ঘ্যের একটি ASCII স্ট্রিং হবে। আউটপুটটি সেই ইনপুট স্ট্রিংয়ের সিআরসি 32 হ্যাশ হবে।
ব্যাখ্যা
সিআরসি 32 এবং অন্যান্য সিআরসি-এর অ্যালগরিদম মূলত একই, সুতরাং কেবল সিআরসি 3 এখানে প্রদর্শিত হবে।
প্রথমত, আপনার জেনারেটরের বহুপদী রয়েছে, যা আসলে একটি 4-বিট [এন + 1] পূর্ণসংখ্যা (সিআরসি 32 এ 33-বিট হবে)।
এই উদাহরণস্বরূপ, জেনারেটর বহুবচন হয় 1101
।
তারপরে, আপনার কাছে হ্যাশ করার স্ট্রিং থাকবে, যা এই উদাহরণে হবে 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^
(21)
অঞ্চল 1 যখন শূন্য হয় তখন প্রাপ্ত 001
অবশিষ্ট অংশটি সিআরসি 3 হ্যাশের ফলাফল হবে।
চশমা
- জেনারেটর বহুপদী হয়
0x104C11DB7
, বা0b100000100110000010001110110110111
, বা4374732215
। - ইনপুটটি স্ট্রিং বা পূর্ণসংখ্যার একটি তালিকা বা অন্য কোনও যুক্তিসঙ্গত বিন্যাস হতে পারে।
- আউটপুট হেক্স স্ট্রিং বা কেবল একটি পূর্ণসংখ্যা বা অন্য কোনও যুক্তিসঙ্গত ফর্ম্যাট।
- সিআরসি 32 হ্যাশ গণনা করে এমন বিল্ট-ইনগুলি অনুমোদিত নয়।
লক্ষ্য
কোড-গল্ফের জন্য স্ট্যান্ডার্ড বিধি প্রযোজ্য।
সংক্ষিপ্ততম কোডটি জয়ী।
পরীক্ষার মামলা
input output (hex)
"code-golf" 147743960 08CE64D8
"jelly" 1699969158 65537886
"" 0 00000000