소개:
나는 한때 어렸을 때 컴파일 된 문서에 다양한 암호가 저장되어 있으며, 도전에 가장 적합하다고 생각되는 몇 가지를 선택했습니다 (너무 사소하지 않고 어렵지 않음). 대부분은 여전히 샌드 박스에 있으며, 모두 게시할지 또는 일부만 게시할지 확실하지 않습니다. 다음은 두 번째 것입니다 ( 컴퓨터 암호 는 내가 게시 한 첫 번째 것입니다).
를 들어 삼열 암호 알파벳 (키워드를 사용하지 않고) (및 추가 와일드 카드) 세 3 세에 의해 테이블로 나누어 져 있습니다 :
table 1: table 2: table 3:
|1 2 3 |1 2 3 |1 2 3
-+----- -+----- -+-----
1|a b c 1|j k l 1|s t u
2|d e f 2|m n o 2|v w x
3|g h i 3|p q r 3|y z
우리가 암호화하고자하는 텍스트는 테이블 행 열 번호로 인코딩 된 첫 문자입니다. 예를 들어, 텍스트 this is a trifid cipher
는 다음과 같습니다.
t h i s i s a t r i f i d c i p h e r
table: 3 1 1 3 3 1 3 3 1 3 3 2 1 1 1 1 3 1 1 2 1 1 2
row: 1 3 3 1 3 3 1 3 1 3 1 3 3 2 3 2 3 1 3 3 3 2 3
column: 2 2 3 1 3 3 1 3 1 3 2 3 3 3 3 1 3 3 3 1 2 2 3
그런 다음 위의 표에서 세 개씩 그룹으로 모든 항목을 하나씩 차례로 배치합니다.
311 331 331 332 111 131 121 121 331 331 313 133 232 313 332 322 313 313 132 333 313 331 223
그리고 같은 테이블을 사용하여 문자로 다시 변환됩니다.
s y y z a g d d y y u i q u z w u u h u y o
한 가지 주목할 점은 입력 길이는 3의 공통점이되어야합니다. 따라서 길이가 3의 배수 인 경우 입력 길이가 3의 배수가 아닌 하나 또는 두 개의 후행 공백을 추가합니다.
도전:
문자열이 주어지면 sentence_to_encipher
위에서 설명한 것처럼 암호화하십시오.
당신은 주어진 sentence_to_encipher
암호를 해독해야하므로 해독 프로그램 / 기능을 만들 필요가 없습니다. 그러나 나는 미래에 해독에 대해 2 부 도전을 할 수 있습니다 (암호화 과정과 사소한 / 유사한 느낌이 들지만).
도전 규칙 :
- 당신은
sentence_to_encipher
문자와 공백만을 포함 한다고 가정 할 수 있습니다 . - 소문자 또는 대문자를 사용할 수 있습니다 (답변에 사용한 것을 적어주십시오).
- 입력 길이가 3 일 때 하나 또는 두 개의 후행 공백을 추가하여 더 이상 3의 배수가되지 않도록 선택할 수 있습니다.
- I / O는 유연합니다. 입력과 출력 모두 문자열, 목록 / 배열 / 문자 스트림 등이 될 수 있습니다.
일반 규칙:
- 이것은 code-golf 이므로 바이트 단위의 최단 답변이 이깁니다.
코드 골프 언어가 코드 골프 언어 이외의 언어로 답변을 게시하지 못하게하지 마십시오. '모든'프로그래밍 언어에 대한 가능한 한 짧은 대답을 생각해보십시오. - 표준 규칙 은 기본 I / O 규칙으로 답변에 적용 되므로 STDIN / STDOUT, 적절한 매개 변수 및 반환 유형의 전체 프로그램과 함께 함수 / 방법을 사용할 수 있습니다. 당신의 전화.
- 기본 허점 은 금지되어 있습니다.
- 가능하면 코드 테스트와 함께 링크를 추가하십시오 (예 : TIO ) .
- 또한 답변에 대한 설명을 추가하는 것이 좋습니다.
테스트 사례 :
Input: "this is a trifid cipher"
Output: "syyzagddyyuiquzwuuh uyo"
Input: "test"
Output: "utbk"
Input: "output"
Possible outputs: "rrvgivx" (one space) or "rrzcc lr" (two spaces)
Input: "trifidcipher"
Possible output: "vabbuxlzz utr" (one space) or "vabbyzv rx ie " (two spaces)