Crittografia crittografia Pigpen
La tua missione è semplice: scrivere un programma che riceve il testo come input e ne genera una rappresentazione ASCII nel Pigpen Cipher .
Ingresso
Caratteri solo ASCII (no Unicode). Devi essere in grado di gestire almeno 16384 caratteri e 256 righe.
Produzione
- Sostituisci tutti i caratteri che non sono nuove righe o in
ABCDEFGHIJKLMNOPQRSTUVWXYZoabcdefghijklmnopqrstuvwxyzcon spazi. - Indifferentemente dal maiuscolo / minuscolo, sostituisci ogni lettera con la sua forma crittografata (vedi la sezione successiva), inserendo uno spazio finale su ciascuna delle tre righe dopo ciascuna. Ogni carattere codificato è un blocco 3 * 3 di arte ASCII. Sostituisci gli spazi con 3 * 3 blocchi di spazi.
- Tutti i personaggi dovrebbero essere sulle stesse tre linee (chiamate queste tre linee una linea pigpen), a meno che non ci sia una nuova linea, che inizia una nuova linea pigpen. Lasciare vuota una linea normale tra le linee del porcile.
The Cipher
| | | |
.| |.| |.
--+ 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)
Esempio
L'input "hEllo, wORLd" dovrebbe produrre:
+-+ +-+ | | +-- +-- +-- | --+
| | | | |. |. |. \./ |. |. |. |
| | +-+ +-- +-- +-- V +-- | +-- --+
La codifica base64 di quanto sopra, con una nuova riga finale, è al di sotto. Il md5sum è 6f8ff1fed0cca4dd0492f9728ea02e7b.
Ky0rICstKyB8ICAgfCAgICstLSAgICAgICAgICstLSArLS0gfCAgIC0tKwp8IHwgfCB8IHwuICB8
LiAgfC4gICAgICBcLi8gfC4gIHwuICB8LiAgICB8CnwgfCArLSsgKy0tICstLSArLS0gICAgICBW
ICArLS0gfCAgICstLSAtLSsK
Senza una nuova riga finale, il md5sum è 581005bef7ee76e24c019d076d5b375fe il base64 è:
Ky0rICstKyB8ICAgfCAgICstLSAgICAgICAgICstLSArLS0gfCAgIC0tKwp8IHwgfCB8IHwuICB8
LiAgfC4gICAgICBcLi8gfC4gIHwuICB8LiAgICB8CnwgfCArLSsgKy0tICstLSArLS0gICAgICBW ICArLS0gfCAgICstLSAtLSs =
Regole
- Sono vietate le scappatoie standard .
- Questo è il codice golf. Il codice più corto vince.
- Nelle lingue che non possono accettare più righe di input alla volta (ad es. JavaScript con
prompt()), utilizzare*(o qualche altro carattere) come separatore di riga.
Erranda
- Nell'esempio mancavano alcuni spazi (uno spazio dovrebbe essere costituito dagli spazi finali del personaggio precedente, se presente, e dai propri spazi finali). Questo è stato risolto.
promptviene utilizzato per l'input, ma accetta solo una riga. Potrei usare un carattere speciale (come '*') per contrassegnare una nuova riga in input ?.