레일 펜스 암호의 인코딩과 디코딩을 구현해요.
레일 펜스 암호는 인코딩하는 방식에서 이름을 따온 전위 암호의 한 종류예요. 고대 그리스인들도 이미 사용했어요.
레일 펜스 암호에서는 상상 속 울타리의 연속된 "레일"을 따라 메시지를 아래로 써 내려가다가, 바닥에 닿으면 다시 위로 올라가요 (지그재그처럼요). 마지막으로 메시지를 행 단위로 읽어요.
예를 들어 "레일" 세 개와 "WE ARE DISCOVERED FLEE AT ONCE"라는 메시지를 사용하면, 암호를 작성하는 사람은 이렇게 써 내려가요:
W . . . E . . . C . . . R . . . L . . . T . . . E
. E . R . D . S . O . E . E . F . E . A . O . C .
. . A . . . I . . . V . . . D . . . E . . . N . .
그런 다음 이렇게 읽어요:
WECRLTEERDSOEEFEAOCAIVDEN
메시지를 복호화하려면 지그재그 모양을 그리고, 각 행을 따라 암호문을 채워 넣어요.
? . . . ? . . . ? . . . ? . . . ? . . . ? . . . ?
. ? . ? . ? . ? . ? . ? . ? . ? . ? . ? . ? . ? .
. . ? . . . ? . . . ? . . . ? . . . ? . . . ? . .
첫 번째 행에는 "WECRLTE"로 채울 수 있는 자리가 일곱 개 있어요.
W . . . E . . . C . . . R . . . L . . . T . . . E
. ? . ? . ? . ? . ? . ? . ? . ? . ? . ? . ? . ? .
. . ? . . . ? . . . ? . . . ? . . . ? . . . ? . .
이제 두 번째 행에는 "ERDSOEEFEAOC"가 들어가요.
W . . . E . . . C . . . R . . . L . . . T . . . E
. E . R . D . S . O . E . E . F . E . A . O . C .
. . ? . . . ? . . . ? . . . ? . . . ? . . . ? . .
마지막 행에는 "AIVDEN"이 남아요.
W . . . E . . . C . . . R . . . L . . . T . . . E
. E . R . D . S . O . E . E . F . E . A . O . C .
. . A . . . I . . . V . . . D . . . E . . . N . .
이제 지그재그 모양을 따라 읽으면 원래 메시지를 읽을 수 있어요.
Exercism에 가입하고 Roc 트랙을 연습 문제 120개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.