Pigpen Cipher暗号化
あなたの使命は簡単です。入力としてテキストを受け取り、そのテキストのASCII表現をPigpen Cipherに出力するプログラムを書くことです。
入力
ASCIIのみ(Unicodeなし)の文字。少なくとも16384文字と256行を処理できる必要があります。
出力
- 改行ではないすべての文字を、スペースで、
ABCDEFGHIJKLMNOPQRSTUVWXYZまたはabcdefghijklmnopqrstuvwxyzスペースで置き換えます。 - 大文字と小文字を区別せずに、各文字を暗号化された形式に置き換え(次のセクションを参照)、3行それぞれに末尾のスペースを挿入します。エンコードされた各文字は、ASCIIアートの3 * 3ブロックです。スペースを3 * 3ブロックのスペースに置き換えます。
- 新しいピッペンラインを開始する新しいラインがない限り、すべてのキャラクターは同じ3行にある必要があります(これらの3行を1つのピッペンラインと呼びます)。ピッペンラインの間の通常のラインは空白のままにします。
暗号
| | | |
.| |.| |.
--+ 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エンコードと、後続の改行は以下のとおりです。md5sumは6f8ff1fed0cca4dd0492f9728ea02e7bです。
Ky0rICstKyB8ICAgfCAgICstLSAgICAgICAgICstLSArLS0gfCAgIC0tKwp8IHwgfCB8IHwuICB8
LiAgfC4gICAgICBcLi8gfC4gIHwuICB8LiAgICB8CnwgfCArLSsgKy0tICstLSArLS0gICAgICBW
ICArLS0gfCAgICstLSAtLSsK
末尾に新しい行がない場合、md5sumは581005bef7ee76e24c019d076d5b375fbase64です。
Ky0rICstKyB8ICAgfCAgICstLSAgICAgICAgICstLSArLS0gfCAgIC0tKwp8IHwgfCB8IHwuICB8
LiAgfC4gICAgICBcLi8gfC4gIHwuICB8LiAgICB8CnwgfCArLSsgKy0tICstLSArLS0gICAgICBW ICArLS0gfCAgICstLSAtLSs =
ルール
- 標準の抜け穴は禁止されています。
- これはコードゴルフです。最短のコードが勝ちます。
- 一度に複数行の入力を受け入れることができない言語(JavaScriptとなど
prompt())では、*(またはその他の文字)を行区切りとして使用します。
エランダ
- 例にはいくつかのスペースがありませんでした(スペースは、前の文字の後続スペースがある場合は、それ自体と、それ自体の後続スペースで構成される必要があります)。これは修正されました。
promptは入力に使用されますが、1行のみを受け入れます。特別な文字( '*'など)を使用して、入力の新しい行をマークできますか?