Trong mật mã, phần đệm PKCS # 7 là sơ đồ đệm có thêm một số byte N 1, trong đó giá trị của mỗi byte được thêm bằng với N.
Ví dụ, Hello, World!
có 13 byte, như sau trong hex:
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21
Nếu chúng tôi chọn pad PKCS # 7 đến chiều dài 16, thì kết quả là:
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 03 03 03
Và nếu chúng ta chọn đệm đến độ dài 20, thì kết quả là:
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 07 07 07 07 07 07 07
Lưu ý rằng trong ví dụ đầu tiên, chúng tôi thêm ba 03
byte và trong lần thứ hai, chúng tôi thêm bảy 07
byte.
Nhiệm vụ của bạn sẽ là xác thực xem một chuỗi (hoặc mảng số nguyên) có phần đệm PKCS # 7 chính xác hay không. Nghĩa là, nếu byte cuối cùng của chuỗi đầu vào là N, thì chương trình của bạn sẽ kiểm tra xem N byte cuối cùng của chuỗi có bằng N.
Đầu vào
Một chuỗi ASCII không trống duy nhất chứa các ký tự nằm giữa các điểm mã 1 và 127. Nếu bạn muốn, bạn có thể lấy đầu vào là một mảng các số nguyên thay thế.
Đầu ra
Một truthy giá trị nếu chuỗi đầu vào có hợp lệ PKCS # 7 đệm, nếu không một giá trị falsy.
Cả hai chức năng và chương trình đầy đủ đều được chấp nhận. Đây là mã golf , vì vậy mục đích là để giảm thiểu số lượng byte trong mã của bạn.
Các trường hợp thử nghiệm
Phiên bản mảng số nguyên của các đầu vào được trình bày ở đây - phiên bản chuỗi sẽ có các ký tự không thể in được cho nhiều trường hợp kiểm tra sau:
Sự thật:
[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]
Giả mạo:
[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). Bạn có thể nghĩ về nó như, sau khi tước, bạn sẽ kết thúc với [1 2 3]
.
[1 2 3 3 3 3]
thật hay falsey? Tôi nghĩ nó nên trung thực nhưng tôi không tích cực.