돼지 펜 암호화
당신의 임무는 간단합니다 : 텍스트를 입력으로 받아 프로그램의 ASCII 표현을 Pigpen Cipher로 출력하는 프로그램을 작성하는 것입니다 .
입력
ASCII 전용 (유니 코드 없음) 문자 최소한 16384 자 및 256 줄을 처리 할 수 있어야합니다.
산출
- 줄 바꿈이 아니
ABCDEFGHIJKLMNOPQRSTUVWXYZ
거나abcdefghijklmnopqrstuvwxyz
공백 이 아닌 모든 문자를 바꾸십시오. - 대소 문자를 구분하지 않고 각 문자를 암호화 된 양식으로 바꾸고 (다음 섹션 참조) 각 세 줄 뒤에 후행 공백을 삽입하십시오. 인코딩 된 각 문자는 ASCII 아트의 3 * 3 블록입니다. 공백을 3 * 3 블록의 공백으로 교체하십시오.
- 새로운 피그 펜 라인을 시작하는 새로운 라인이 없다면, 모든 문자는 같은 세 라인에 있어야합니다 (이 세 라인을 하나의 피펜 라인이라고 부릅니다). 피펜 선 사이에 일반 선을 비워 둡니다.
암호
| | | |
.| |.| |.
--+ 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은 다음 581005bef7ee76e24c019d076d5b375f
이며 base64는 다음과 같습니다.
Ky0rICstKyB8ICAgfCAgICstLSAgICAgICAgICstLSArLS0gfCAgIC0tKwp8IHwgfCB8IHwuICB8
LiAgfC4gICAgICBcLi8gfC4gIHwuICB8LiAgICB8CnwgfCArLSsgKy0tICstLSArLS0gICAgICBW ICArLS0gfCAgICstLSAtLSs =
규칙
- 표준 허점 은 금지되어 있습니다.
- 이것은 코드 골프입니다. 가장 짧은 코드가 승리합니다.
- 시간 (예를 들어 자바 스크립트에서 입력의 여러 라인을 받아 들일 수없는 언어에서
prompt()
) 사용*
라인 구분 기호로 (또는 다른 문자).
에 란다
- 예에서 몇 개의 공백이 누락되었습니다 (공백은 이전 문자의 후행 공백과 해당하는 후행 공백으로 구성되어야 함). 이것은 이제 수정되었습니다.
prompt
입력에 사용되지만 한 줄만 허용합니다. 입력에 새 줄을 표시하기 위해 '*'와 같은 특수 문자를 사용할 수 있습니까?