W kryptografii dopełnianie PKCS # 7 to schemat dopełniania, który dodaje liczbę bajtów N ≥ 1, gdzie wartość każdego dodanego bajtu jest równa N.
Na przykład, Hello, World!
który ma 13 bajtów, ma postać szesnastkową:
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21
Jeśli zdecydujemy się na pad PKCS # 7 do długości 16, wówczas wynik będzie:
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 03 03 03
A jeśli wybierzemy pad do długości 20, wynik będzie:
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 07 07 07 07 07 07 07
Zauważ, że w pierwszym przykładzie dodajemy trzy 03
bajty, aw drugim - siedem 07
bajtów.
Twoim zadaniem będzie sprawdzenie, czy łańcuch (lub tablica liczb całkowitych) ma poprawne wypełnienie PKCS # 7. Oznacza to, że jeśli ostatnim bajtem ciągu wejściowego jest N, to twój program powinien sprawdzić, czy ostatnie N bajtów ciągu jest równe N.
Wkład
Pojedynczy niepusty ciąg ASCII zawierający znaki między punktami kodowymi 1 i 127 włącznie. Jeśli chcesz, możesz zamiast tego wprowadzić dane jako tablicę liczb całkowitych.
Wydajność
Truthy wartość jeśli ciąg wejściowy posiada ważne dopełnienie PKCS # 7, w przeciwnym razie wartość falsy.
Zarówno funkcje, jak i pełne programy są dopuszczalne. To jest golf golfowy , więc celem jest zminimalizowanie liczby bajtów w kodzie.
Przypadki testowe
Prezentowana jest wersja danych wejściowych w postaci liczb całkowitych - wersja łańcuchowa zawierałaby znaki niedrukowalne w wielu z następujących przypadków testowych:
Prawda:
[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). Możesz myśleć o tym jak po rozebraniu się [1 2 3]
.
[1 2 3 3 3 3]
prawda czy falsey? Myślę, że to powinna być prawda, ale nie jestem pozytywny.