Pigpen Cipher Encryption
Votre mission est simple: écrire un programme qui reçoit du texte en entrée et en génère une représentation ASCII dans le Pigpen Cipher .
Contribution
Caractères ASCII uniquement (pas d'Unicode). Vous devez être capable de gérer au moins 16384 caractères et 256 lignes.
Production
- Remplacez tous les caractères qui ne sont pas de nouvelles lignes ou dans
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ouabcdefghijklmnopqrstuvwxyz
par des espaces. - Insensible à la casse, remplacez chaque lettre par sa forme cryptée (voir la section suivante), en insérant un espace de fin sur chacune des trois lignes après chacune. Chaque caractère encodé est un bloc 3 * 3 de l'art ASCII. Remplacez les espaces par 3 * 3 blocs d'espaces.
- Tous les caractères doivent être sur les mêmes trois lignes (appelez ces trois lignes une ligne pigpen), à moins qu'il n'y ait une nouvelle ligne, qui démarre une nouvelle ligne pigpen. Laissez une ligne normale vide entre les lignes de porcherie.
Le chiffre
| | | |
.| |.| |.
--+ 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)
Exemple
L'entrée "hEllo, wORLd" devrait produire:
+-+ +-+ | | +-- +-- +-- | --+
| | | | |. |. |. \./ |. |. |. |
| | +-+ +-- +-- +-- V +-- | +-- --+
Le codage base64 de ce qui précède, avec une nouvelle ligne de fin, est ci-dessous. La somme md5 est 6f8ff1fed0cca4dd0492f9728ea02e7b
.
Ky0rICstKyB8ICAgfCAgICstLSAgICAgICAgICstLSArLS0gfCAgIC0tKwp8IHwgfCB8IHwuICB8
LiAgfC4gICAgICBcLi8gfC4gIHwuICB8LiAgICB8CnwgfCArLSsgKy0tICstLSArLS0gICAgICBW
ICArLS0gfCAgICstLSAtLSsK
Sans nouvelle ligne de fin, le md5sum est 581005bef7ee76e24c019d076d5b375f
et le base64 est:
Ky0rICstKyB8ICAgfCAgICstLSAgICAgICAgICstLSArLS0gfCAgIC0tKwp8IHwgfCB8IHwuICB8
LiAgfC4gICAgICBcLi8gfC4gIHwuICB8LiAgICB8CnwgfCArLSsgKy0tICstLSArLS0gICAgICBW ICArLS0gfCAgICstLSAtLSs =
Règles
- Les failles standard sont interdites.
- C'est le golf de code. Le code le plus court gagne.
- Dans les langues qui ne peuvent pas accepter plusieurs lignes d'entrée à la fois (par exemple JavaScript avec
prompt()
), utilisez*
(ou un autre caractère) comme séparateur de ligne.
Erranda
- Il manquait quelques espaces à l'exemple (un espace doit être composé des espaces de fin du caractère précédent, le cas échéant, lui-même et de ses propres espaces de fin). Cela a maintenant été corrigé.
prompt
Est généralement utilisé pour la saisie, mais il n'accepte qu'une seule ligne. Puis-je utiliser un caractère spécial (comme '*') pour marquer une nouvelle ligne en entrée?.