Pigpen-Verschlüsselung
Ihre Mission ist einfach: Schreiben eines Programms, das Text als Eingabe empfängt und eine ASCII-Darstellung davon in der Pigpen-Chiffre ausgibt .
Eingang
Nur ASCII-Zeichen (kein Unicode). Sie müssen in der Lage sein, mindestens 16384 Zeichen und 256 Zeilen zu verarbeiten.
Ausgabe
- Ersetzen Sie alle Zeichen, die keine neuen Zeilen oder in
ABCDEFGHIJKLMNOPQRSTUVWXYZ
oderabcdefghijklmnopqrstuvwxyz
durch Leerzeichen sind. - Ersetzen Sie jeden Buchstaben ohne Berücksichtigung der Groß- und Kleinschreibung durch seine verschlüsselte Form (siehe nächster Abschnitt) und fügen Sie in jede der drei Zeilen nach jeder ein Leerzeichen ein. Jedes codierte Zeichen ist ein 3 * 3-Block von ASCII-Kunst. Ersetzen Sie Leerzeichen durch 3 * 3 Leerzeichenblöcke.
- Alle Zeichen sollten sich in denselben drei Zeilen befinden (nennen Sie diese drei Zeilen eine Pigpen-Zeile), es sei denn, es gibt eine neue Zeile, die eine neue Pigpen-Zeile startet. Lassen Sie eine normale Linie zwischen den Schweinestalllinien leer.
Die 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)
Beispiel
Die Eingabe "hEllo, wORLd" sollte Folgendes erzeugen:
+-+ +-+ | | +-- +-- +-- | --+
| | | | |. |. |. \./ |. |. |. |
| | +-+ +-- +-- +-- V +-- | +-- --+
Die base64-Codierung des obigen mit einer nachfolgenden neuen Zeile ist unten. Die md5sum ist 6f8ff1fed0cca4dd0492f9728ea02e7b
.
Ky0rICstKyB8ICAgfCAgICstLSAgICAgICAgICstLSArLS0gfCAgIC0tKwp8IHwgfCB8IHwuICB8
LiAgfC4gICAgICBcLi8gfC4gIHwuICB8LiAgICB8CnwgfCArLSsgKy0tICstLSArLS0gICAgICBW
ICArLS0gfCAgICstLSAtLSsK
Ohne eine nachfolgende neue Zeile lautet die md5sum 581005bef7ee76e24c019d076d5b375f
und die base64:
Ky0rICstKyB8ICAgfCAgICstLSAgICAgICAgICstLSArLS0gfCAgIC0tKwp8IHwgfCB8IHwuICB8
LiAgfC4gICAgICBcLi8gfC4gIHwuICB8LiAgICB8CnwgfCArLSsgKy0tICstLSArLS0gICAgICBW ICArLS0gfCAgICstLSAtLSs =
Regeln
- Standardlücken sind verboten.
- Das ist Code Golf. Der kürzeste Code gewinnt.
prompt()
Verwenden Sie in Sprachen, die nicht mehrere Eingabezeilen gleichzeitig akzeptieren können (z. B. JavaScript mit ),*
(oder ein anderes Zeichen) als Zeilentrennzeichen.
Erranda
- Dem Beispiel fehlten einige Leerzeichen (Ein Leerzeichen sollte aus den nachfolgenden Leerzeichen des vorherigen Zeichens, falls vorhanden, selbst und seinen eigenen nachfolgenden Leerzeichen bestehen). Dies wurde nun behoben.
prompt
für die Eingabe verwendet, akzeptiert jedoch nur eine einzelne Zeile. Könnte ich ein spezielles Zeichen (wie '*') verwenden, um eine neue Zeile in der Eingabe zu markieren?