Шифрование Pigpen Cipher
Ваша миссия проста: написать программу, которая получает текст в качестве входных данных и выводит его ASCII-представление в Pigpen Cipher .
вход
Только для 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 +-- | +-- --+
Кодировка base64 выше, с завершающей новой строкой, ниже. Сумма md5 есть 6f8ff1fed0cca4dd0492f9728ea02e7b
.
Ky0rICstKyB8ICAgfCAgICstLSAgICAgICAgICstLSArLS0gfCAgIC0tKwp8IHwgfCB8IHwuICB8
LiAgfC4gICAgICBcLi8gfC4gIHwuICB8LiAgICB8CnwgfCArLSsgKy0tICstLSArLS0gICAgICBW
ICArLS0gfCAgICstLSAtLSsK
Без завершающей новой строки md5sum - это, 581005bef7ee76e24c019d076d5b375f
а base64 - это:
Ky0rICstKyB8ICAgfCAgICstLSAgICAgICAgICstLSArLS0gfCAgIC0tKwp8IHwgfCB8IHwuICB8
LiAgfC4gICAgICBcLi8gfC4gIHwuICB8LiAgICB8CnwgfCArLSsgKy0tICstLSArLS0gICAgICBW ICArLS0gfCAgICstLSAtLSs =
правила
- Стандартные лазейки запрещены.
- Это код гольф. Самый короткий код выигрывает.
- В языках, которые не могут принимать несколько строк ввода одновременно (например, JavaScript с
prompt()
), используйте*
(или какой-либо другой символ) в качестве разделителя строк.
Erranda
- В примере отсутствовали несколько пробелов (пробел должен состоять из завершающих пробелов предыдущего символа, если таковые имеются, самого себя и его собственных пробелов). Теперь это было исправлено.
prompt
используется для ввода, но он принимает только одну строку. Могу ли я использовать специальный символ (например, '*'), чтобы отметить новую строку в вводе?