Szyfrowanie Pigpen
Twoja misja jest prosta: napisać program, który odbiera tekst jako dane wejściowe i wyświetla jego reprezentację ASCII w Szyfrze Pigpena .
Wejście
Znaki tylko ASCII (bez Unicode). Musisz mieć możliwość obsługi co najmniej 16384 znaków i 256 linii.
Wynik
- Wymień wszystkie znaki, które nie są nowe linie lub w
ABCDEFGHIJKLMNOPQRSTUVWXYZlubabcdefghijklmnopqrstuvwxyzspacjami. - Bez względu na wielkość liter, zamień każdą literę na zaszyfrowaną formę (patrz następna sekcja), wstawiając końcowe spacje w każdej z trzech linii po każdej. Każdy zakodowany znak to 3 * 3 blok sztuki ASCII. Zastąp spacje 3 * 3 blokami spacji.
- Wszystkie postacie powinny znajdować się w tych samych trzech liniach (nazwać te trzy linie jedną linią świni), chyba że istnieje nowa linia, która rozpoczyna nową linię świnki. Pozostaw normalną linię pustą między liniami pigpen.
Szyfr
| | | |
.| |.| |.
--+ 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)
Przykład
Dane wejściowe „hEllo, wORLd” powinny dawać:
+-+ +-+ | | +-- +-- +-- | --+
| | | | |. |. |. \./ |. |. |. |
| | +-+ +-- +-- +-- V +-- | +-- --+
Powyższe kodowanie base64 z końcową nową linią znajduje się poniżej. Suma md5 jest 6f8ff1fed0cca4dd0492f9728ea02e7b.
Ky0rICstKyB8ICAgfCAgICstLSAgICAgICAgICstLSArLS0gfCAgIC0tKwp8IHwgfCB8IHwuICB8
LiAgfC4gICAgICBcLi8gfC4gIHwuICB8LiAgICB8CnwgfCArLSsgKy0tICstLSArLS0gICAgICBW
ICArLS0gfCAgICstLSAtLSsK
Bez końcowej nowej linii, md5sum jest, 581005bef7ee76e24c019d076d5b375fa base64 to:
Ky0rICstKyB8ICAgfCAgICstLSAgICAgICAgICstLSArLS0gfCAgIC0tKwp8IHwgfCB8IHwuICB8
LiAgfC4gICAgICBcLi8gfC4gIHwuICB8LiAgICB8CnwgfCArLSsgKy0tICstLSArLS0gICAgICBW ICArLS0gfCAgICstLSAtLSs =
Zasady
- Standardowe luki są zabronione.
- To jest kod golfowy. Najkrótszy kod wygrywa.
- W językach, które nie mogą zaakceptować wielu wierszy wprowadzania naraz (np. JavaScript za pomocą
prompt()), użyj*(lub jakiegoś innego znaku) jako separatora linii.
Erranda
- W przykładzie brakowało kilku spacji (spacja powinna składać się z końcowych spacji poprzedniego znaku, jeśli w ogóle, i własnych spacji końcowych). To już zostało naprawione.
promptsłuży do wprowadzania danych, ale przyjmuje tylko jedną linię. Czy mogę użyć specjalnego znaku (takiego jak „*”), aby zaznaczyć nowy wiersz na wejściu ?.