Viết chương trình hoặc chức năng (hoặc bộ chương trình / chức năng) để mã hóa và giải mã dữ liệu theo thông số kỹ thuật sau:
Mã hóa
Tính toán hàm băm XOR của đầu vào bằng XOR-ing mỗi byte với nhau.
XOR mỗi byte của đầu vào bởi hàm băm này.
Thay đổi kết quả bốn bit còn lại.
Pad bên trái với bốn bit đầu tiên của hàm băm XOR.
Pad bên phải với bốn bit cuối cùng của hàm băm XOR.
Thí dụ
Cho đầu vào:
"G0lf"
(0x47306C66
)Tính toán băm XOR:
0x47 ^ 0x30 ^ 0x6C ^ 0x66 = 0x7D
XOR mỗi byte theo hàm băm:
0x3A4D111B
Kết quả dự kiến (sau ca và pad):
"s¤Ñ\x11½"
(0x73A4D111BD
)
Quy tắc
Chương trình / chức năng của bạn có thể nhập / xuất bất kỳ loại nào có ý nghĩa trong ngôn ngữ chơi gôn của bạn (Chuỗi, Mảng Byte, v.v.) miễn là đầu vào / đầu ra là các byte thực tế. Ví dụ: bạn không thể xuất chuỗi thập lục phân.
Mã hóa và giải mã có thể được tách thành các chương trình riêng biệt (điểm sẽ là kích thước kết hợp của chúng) hoặc một kích thước duy nhất. Các phương thức đơn lẻ có thể đưa ra một đối số cho việc nó nên mã hóa hay giải mã.
Đầu vào để mã hóa có thể được dự kiến có kích thước tối thiểu 1 byte.
Đầu vào để giải mã có thể được dự kiến ít nhất là 2 byte.
Các byte không in được không cần phải thoát trong đầu ra.