เขียนฟังก์ชั่นที่ให้บัฟเฟอร์b
(1 - 104857600 ไบต์ยาว) และจำนวนบิตn
(1 <= n <= 64) ให้แบ่งบัฟเฟอร์ออกเป็นส่วนn
ๆ ขวาแผ่นอันสุดท้ายด้วย0
s ถึงn
บิต
เช่น
รับบัฟเฟอร์b = "f0oBaR"
หรือเทียบเท่า[102,48,111,66,97,82]
และn = 5
ส่งคืน
[12, 24, 24, 6, 30, 16, 19, 1, 10, 8]
นี่เป็นเพราะบัฟเฟอร์ข้างต้นเมื่อแสดงเป็นไบนารีดูเหมือนว่า:
01100110 00110000 01101111 01000010 01100001 01010010
และเมื่อจัดกลุ่มเป็น 5s อีกครั้งจะมีลักษณะดังนี้:
01100 11000 11000 00110 11110 10000 10011 00001 01010 010[00]
ซึ่งเมื่อแปลงกลับเป็นทศนิยมจะให้คำตอบ
หมายเหตุ
- คุณอาจใช้ชนิดข้อมูลใดก็ได้ที่เหมาะสมที่สุดในภาษาของคุณเพื่อใช้แทนบัฟเฟอร์ ใน PHP คุณอาจใช้สตริงใน Node คุณอาจต้องการใช้Buffer
- หากคุณใช้สตริงเพื่อแทนบัฟเฟอร์ให้ถือว่าเป็น ASCII สำหรับการแปลงถ่าน -> int
- คุณสามารถใช้อาร์เรย์ของ ints (0-255) สำหรับการป้อนข้อมูลหากคุณต้องการ
- ค่าส่งคืนต้องเป็นอาร์เรย์หรือรายการของ ints
กรณีทดสอบ
> b = "Hello World", n = 50
318401791769729, 412278856237056
> b = [1,2,3,4,5], n = 1
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1
> b = "codegolf", n = 32
1668244581, 1735355494
> b = "codegolf" n = 64
7165055918859578470
> b = "codegolf" n = 7
49, 91, 108, 70, 43, 29, 94, 108, 51, 0
> b = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque vel est eu velit lacinia iaculis. Nulla facilisi. Mauris vitae elit sapien. Nullam odio nulla, laoreet at lorem eu, elementum ultricies libero. Praesent orci elit, sodales consectetur magna eget, pulvinar eleifend mi. Ut euismod leo ut tortor ultrices blandit. Praesent dapibus tincidunt velit vitae viverra. Nam posuere dui quis ipsum iaculis, quis tristique nisl tincidunt. Aliquam ac ligula a diam congue tempus sit amet quis nisl. Nam lacinia ante vitae leo efficitur, eu tincidunt metus condimentum. Cras euismod quis quam vitae imperdiet. Ut at est turpis.", n = 16
19567, 29285, 27936, 26992, 29557, 27936, 25711, 27759, 29216, 29545, 29728, 24941, 25972, 11296, 25455, 28275, 25955, 29797, 29813, 29216, 24932, 26992, 26995, 25449, 28263, 8293, 27753, 29742, 8272, 25964, 27749, 28276, 25971, 29045, 25888, 30309, 27680, 25971, 29728, 25973, 8310, 25964, 26996, 8300, 24931, 26990, 26977, 8297, 24931, 30060, 26995, 11808, 20085, 27756, 24864, 26209, 25449, 27753, 29545, 11808, 19809, 30066, 26995, 8310, 26996, 24933, 8293, 27753, 29728, 29537, 28777, 25966, 11808, 20085, 27756, 24941, 8303, 25705, 28448, 28277, 27756, 24876, 8300, 24943, 29285, 25972, 8289, 29728, 27759, 29285, 27936, 25973, 11296, 25964, 25965, 25966, 29813, 27936, 30060, 29810, 26979, 26981, 29472, 27753, 25189, 29295, 11808, 20594, 24933, 29541, 28276, 8303, 29283, 26912, 25964, 26996, 11296, 29551, 25697, 27749, 29472, 25455, 28275, 25955, 29797, 29813, 29216, 28001, 26478, 24864, 25959, 25972, 11296, 28789, 27766, 26990, 24946, 8293, 27749, 26982, 25966, 25632, 28009, 11808, 21876, 8293, 30057, 29549, 28516, 8300, 25967, 8309, 29728, 29807, 29300, 28530, 8309, 27764, 29289, 25445, 29472, 25196, 24942, 25705, 29742, 8272, 29281, 25971, 25966, 29728, 25697, 28777, 25205, 29472, 29801, 28259, 26980, 30062, 29728, 30309, 27753, 29728, 30313, 29793, 25888, 30313, 30309, 29298, 24878, 8270, 24941, 8304, 28531, 30053, 29285, 8292, 30057, 8305, 30057, 29472, 26992, 29557, 27936, 26977, 25461, 27753, 29484, 8305, 30057, 29472, 29810, 26995, 29801, 29045, 25888, 28265, 29548, 8308, 26990, 25449, 25717, 28276, 11808, 16748, 26993, 30049, 27936, 24931, 8300, 26983, 30060, 24864, 24864, 25705, 24941, 8291, 28526, 26485, 25888, 29797, 28016, 30067, 8307, 26996, 8289, 28005, 29728, 29045, 26995, 8302, 26995, 27694, 8270, 24941, 8300, 24931, 26990, 26977, 8289, 28276, 25888, 30313, 29793, 25888, 27749, 28448, 25958, 26217, 25449, 29813, 29228, 8293, 29984, 29801, 28259, 26980, 30062, 29728, 28005, 29813, 29472, 25455, 28260, 26989, 25966, 29813, 27950, 8259, 29281, 29472, 25973, 26995, 28015, 25632, 29045, 26995, 8305, 30049, 27936, 30313, 29793, 25888, 26989, 28773, 29284, 26981, 29742, 8277, 29728, 24948, 8293, 29556, 8308, 30066, 28777, 29486
> b = [2,31,73,127,179,233], n = 8
2, 31, 73, 127, 179, 233
char
เป็นจำนวนเต็มที่มีความยาวหนึ่งไบต์
n
มากกว่า 8 หรือไม่? ถ้าเป็นเช่นนั้นแล้วค่าใดที่n
มากกว่า 64 ซึ่งมากกว่าความแม่นยำจำนวนเต็มของภาษาส่วนใหญ่