ในวิทยาการเข้ารหัสลับการหุ้ม PKCS # 7เป็นโครงร่างการขยายซึ่งเพิ่มจำนวนไบต์ N ≥ 1 โดยที่ค่าของแต่ละไบต์ที่เพิ่มมีค่าเท่ากับ N
ตัวอย่างเช่นHello, World!
ซึ่งมี 13 ไบต์มีดังต่อไปนี้ในฐานสิบหก:
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21
ถ้าเราเลือกที่จะ PKCS # 7 ความยาว 16 แผ่นผลที่ได้คือ:
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 03 03 03
และถ้าเราเลือกที่จะยาวถึง 20 แผ่นผลลัพธ์ก็คือ:
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 07 07 07 07 07 07 07
โปรดทราบว่าในตัวอย่างแรกเราเพิ่มสาม03
ไบต์และในวินาทีที่เราเพิ่มเจ็ด07
ไบต์
งานของคุณคือการตรวจสอบว่าสตริง (หรืออาร์เรย์จำนวนเต็ม) มีการเติม PKCS # 7 ที่ถูกต้อง นั่นคือถ้าไบต์สุดท้ายของสตริงอินพุตคือ N ดังนั้นโปรแกรมของคุณควรตรวจสอบว่าไบต์สุดท้ายของสตริงเท่ากับ N
อินพุต
สตริง ASCII ที่ไม่ว่างเปล่าซึ่งมีอักขระระหว่างรหัสจุด 1 ถึง 127 หากคุณต้องการคุณอาจป้อนข้อมูลเป็นอาร์เรย์จำนวนเต็มแทน
เอาท์พุต
truthyค่าถ้าสายป้อนมี PKCS # 7 ที่ถูกต้อง padding มิฉะนั้นค่า falsy
ทั้งฟังก์ชั่นและโปรแกรมเต็มรูปแบบเป็นที่ยอมรับ นี่คือโค้ดกอล์ฟดังนั้นจุดประสงค์คือเพื่อลดจำนวนไบต์ในรหัสของคุณ
กรณีทดสอบ
อินพุตของอาร์เรย์จำนวนเต็มมีการแสดงไว้ที่นี่ - รุ่นสตริงจะมีอักขระที่ไม่สามารถพิมพ์ได้สำหรับกรณีทดสอบต่อไปนี้จำนวนมาก:
Truthy:
[1]
[1, 1]
[2, 1]
[2, 2]
[5, 6, 5, 3, 3, 3]
[1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2]
[95, 115, 80, 32, 71, 7, 122, 49, 13, 7, 7, 7, 7, 7, 7, 7, 7]
[27, 33, 54, 65, 97, 33, 52, 55, 60, 1, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10]
[15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15]
Falsy:
[2]
[1, 2]
[5, 5, 5, 5]
[5, 6, 5, 4, 4, 4]
[3, 3, 3, 94, 3, 3]
[1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 127]
[50, 39, 94, 105, 49, 29, 74, 102, 2, 106, 44, 7, 7, 7, 7, 7, 7]
[26, 27, 59, 25, 122, 110, 20, 30, 114, 6, 9, 62, 121, 42, 22, 60, 33, 12]
7
s) [1 2 3]
คุณสามารถคิดว่ามันเป็นหลังจากปอกคุณจะจบลงด้วย
[1 2 3 3 3 3]
จริงหรือเท็จ? ฉันคิดว่ามันควรจะเป็นความจริง แต่ฉันไม่ได้เป็นบวก