Шифрування Pippen Cipher
Ваша місія проста: написати програму, яка отримує текст як вхідний і виводить ASCII уявлення про нього в шифр Pigpen .
Вхідні дані
Символи, що містять лише ASCII (без Unicode). Ви повинні мати можливість обробляти принаймні 16384 символи та 256 рядків.
Вихідні дані
- Замініть усі символи, які не є новими рядками, або пробілами
ABCDEFGHIJKLMNOPQRSTUVWXYZ
чиabcdefghijklmnopqrstuvwxyz
пробілами. - Замініть кожну букву на зашифровану форму (див. Наступний розділ), вставляючи пробіл у кожному з трьох рядків після кожного. Кожен закодований символ є блоком 3 * 3 мистецтва ASCII. Замініть пробіли на 3 * 3 блоки пробілів.
- Усі символи повинні бути на одних і тих же трьох рядках (називайте ці три рядки однією пороховою лінією), за винятком випадків, коли є нова лінія, яка починає нову лінію порося. Залиште звичайну лінію порожньою між поросячими лініями.
Шифр
| | | |
.| |.| |.
--+ 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)
Приклад
Вхід "hEllo, wORLd" повинен створювати:
+-+ +-+ | | +-- +-- +-- | --+
| | | | |. |. |. \./ |. |. |. |
| | +-+ +-- +-- +-- V +-- | +-- --+
Базове кодування вищезазначених, з новим наступним рядком, знаходиться нижче. Md5sum є 6f8ff1fed0cca4dd0492f9728ea02e7b
.
Ky0rICstKyB8ICAgfCAgICstLSAgICAgICAgICstLSArLS0gfCAgIC0tKwp8IHwgfCB8IHwuICB8
LiAgfC4gICAgICBcLi8gfC4gIHwuICB8LiAgICB8CnwgfCArLSsgKy0tICstLSArLS0gICAgICBW
ICArLS0gfCAgICstLSAtLSsK
Без нового рядка, md5sum є, 581005bef7ee76e24c019d076d5b375f
а base64 є:
Ky0rICstKyB8ICAgfCAgICstLSAgICAgICAgICstLSArLS0gfCAgIC0tKwp8IHwgfCB8IHwuICB8
LiAgfC4gICAgICBcLi8gfC4gIHwuICB8LiAgICB8CnwgfCArLSsgKy0tICstLSArLS0gICAgICBW ICArLS0gfCAgICstLSAtLSs =
Правила
- Стандартні лазівки заборонені.
- Це код гольфу. Найкоротший код виграє.
- У мовах, які не можуть приймати декілька рядків введення одночасно (наприклад, JavaScript з
prompt()
), використовуйте*
(або якийсь інший символ) як роздільник рядків.
Ерранда
- У прикладі бракувало декількох пробілів (Пробіл повинен складатися з проміжків проміжків попереднього символу, якщо вони є, та власних пробілів). Зараз це було виправлено.
prompt
використовується для введення, але він приймає лише один рядок. Чи можу я скористатися спеціальним знаком (наприклад, '*'), щоб позначити новий рядок у введенні ?.