도전
문제는 아래에 지정된 규칙을 사용하여 주어진 문자열을 암호화하는 것입니다. 문자열은 소문자 알파벳 , 숫자 및 / 또는 공백 만 포함 합니다 .
캐릭터와 동등
이제 먼저 각 캐릭터의 "동등한"을 찾는 방법을 알아야합니다.
캐릭터가 자음 인 경우 다음과 같은 방법으로 찾을 수 있습니다.
1) List all the consonants in alphabetical order
b c d f g h j k l m n p q r s t v w x y z
2) Get the position of the consonant you are finding the equivalent of.
3) The equivalent is the consonant at that position when starting from the end.
예 : 'h', 't'는 각각 시작과 끝에서 6 번째 위치에 있기 때문에 'h'와 't'는 서로 동등합니다.
모음 / 숫자에 해당하는 동일한 절차를 따릅니다. 모든 모음 또는 숫자 (0부터 시작)를 순서대로 나열하고 해당 항목을 찾습니다.
아래는 모든 문자에 해당하는 목록입니다.
b <-> z
c <-> y
d <-> x
f <-> w
g <-> v
h <-> t
j <-> s
k <-> r
l <-> q
m <-> p
n <-> n
a <-> u
e <-> o
i <-> i
0 <-> 9
1 <-> 8
2 <-> 7
3 <-> 6
4 <-> 5
암호화 규칙
1) 왼쪽에서 움직이기 시작하고 오른쪽으로갑니다.
2) 문자가 자음 / 숫자 인 경우 해당 문자가 취해지고 공백이면 공백이됩니다.
3) 캐릭터가 모음이면, 그와 동등한 것으로 가져와 반대 방향으로 움직이기 시작합니다. 예를 들어, 오른쪽으로 이동하여 모음을 발견 한 경우 해당 문자를 암호화 한 다음 가장 오른쪽에있는 암호화되지 않은 문자로 건너 뛰고 왼쪽 방향으로 암호화를 시작하고 그 반대의 경우도 마찬가지입니다.
4) 같은 위치에있는 캐릭터를 두 번 생각해서는 안됩니다. 입력의 모든 문자를 다룰 때까지 단계를 따라야합니다.
5) 입력의 총 문자 수 (공백 포함)는 출력의 총 문자 수와 같아야합니다.
암호화 된 문자는 암호화 된 순서대로 출력에 나타납니다.
이제 문자열을 암호화하겠습니다.
String = "tre d1go3t is"
Moving left to right
"t" -> "h"
"r" -> "k"
"e" -> "o"
Vowel encountered. Now moving right to left.
"s" -> "j"
"i" -> "i"
Vowel encountered. Now moving left to right.
" " -> " "
"d" -> "x"
"1" -> "8"
"g" -> "v"
"o" -> "e"
Vowel encountered. Now moving right to left.
" " -> " "
"t" -> "h"
"3" -> "6"
Output -> "hkoji x8ve h6"
예
"flyspy" -> "wqcjmc"
"hero" -> "toek"
"heroic" -> "toyike"
"ae" -> "uo"
"abe" -> "uoz"
"the space" -> "htoo jmuy"
"a d1g13t" -> "uh68v8x "
"we xi12" -> "fo78i d"
"this is a code" -> "htioj ixej uy "
소문자 대신 대문자를 사용하도록 선택할 수도 있습니다.
채점
이것은 code-golf 이므로 가장 짧은 코드가 승리합니다!