Mã hóa mật mã Pigpen
Nhiệm vụ của bạn rất đơn giản: viết một chương trình nhận văn bản làm đầu vào và xuất ra bản trình bày ASCII của nó trong Mật mã Pigpen .
Đầu vào
Các ký tự chỉ ASCII (không có Unicode). Bạn phải có khả năng xử lý ít nhất 16384 ký tự và 256 dòng.
Đầu ra
- Thay thế tất cả các ký tự không phải là dòng mới hoặc trong
ABCDEFGHIJKLMNOPQRSTUVWXYZ
hoặcabcdefghijklmnopqrstuvwxyz
bằng dấu cách. - Không phân biệt chữ hoa chữ thường, thay thế từng chữ cái bằng dạng được mã hóa của nó (xem phần tiếp theo), chèn một khoảng trắng ở mỗi trong ba dòng sau mỗi dòng. Mỗi ký tự được mã hóa là một khối 3 * 3 của nghệ thuật ASCII. Thay thế không gian bằng 3 * 3 khối không gian.
- Tất cả các ký tự phải nằm trên ba dòng giống nhau (gọi ba dòng này là một dòng pigpen), trừ khi có một dòng mới, bắt đầu một dòng pigpen mới. Để trống một dòng bình thường giữa các dòng pigpen.
Mật mã
| | | |
.| |.| |.
--+ for J +-+ for K +-- for L
--+ +-+ +--
.| |.| |.
--+ for M +-+ for N +-- for O
--+ +-+ +--
.| |.| |.
| for P | | for Q | for R
(ABCDEFGHI are the same as JKLMNOPQR, but with the . replaced by a space)
\./
V for W (note the row of 3 spaces on the top)
^
/.\ for Z (note the 3 spaces on the bottom)
\
.>
/ for X (note the leading spaces)
/
<.
\ for Y (note extra trailing spaces)
(STUV are like WXYZ, but with the . replaced by a space)
Thí dụ
Đầu vào "hEllo, wORLd" sẽ tạo ra:
+-+ +-+ | | +-- +-- +-- | --+
| | | | |. |. |. \./ |. |. |. |
| | +-+ +-- +-- +-- V +-- | +-- --+
Mã hóa base64 ở trên, với một dòng mới, bên dưới. Md5sum là 6f8ff1fed0cca4dd0492f9728ea02e7b
.
Ky0rICstKyB8ICAgfCAgICstLSAgICAgICAgICstLSArLS0gfCAgIC0tKwp8IHwgfCB8IHwuICB8
LiAgfC4gICAgICBcLi8gfC4gIHwuICB8LiAgICB8CnwgfCArLSsgKy0tICstLSArLS0gICAgICBW
ICArLS0gfCAgICstLSAtLSsK
Không có dòng mới, md5sum 581005bef7ee76e24c019d076d5b375f
và base64 là:
Ky0rICstKyB8ICAgfCAgICstLSAgICAgICAgICstLSArLS0gfCAgIC0tKwp8IHwgfCB8IHwuICB8
LiAgfC4gICAgICBcLi8gfC4gIHwuICB8LiAgICB8CnwgfCArLSsgKy0tICstLSArLS0gICAgICBW ICArLS0gfCAgICstLSAtLS
Quy tắc
- Sơ hở tiêu chuẩn bị cấm.
- Đây là mã golf. Mã ngắn nhất sẽ thắng.
- Trong các ngôn ngữ không thể chấp nhận nhiều dòng đầu vào cùng một lúc (ví dụ: JavaScript có
prompt()
), hãy sử dụng*
(hoặc một số ký tự khác) làm dấu tách dòng.
Erranda
- Ví dụ bị thiếu một vài khoảng trắng (Một khoảng trắng sẽ bao gồm các khoảng trắng ở cuối của ký tự trước, nếu có, chính nó và các khoảng trắng ở cuối của nó). Điều này hiện đã được sửa chữa.
prompt
được sử dụng cho đầu vào, nhưng nó chỉ chấp nhận một dòng duy nhất. Tôi có thể sử dụng một char đặc biệt (như '*') để đánh dấu một dòng mới trong đầu vào không?.