기술
Caesar Shift는 매우 간단한 단일 알파벳 암호로 각 문자는 알파벳에서 그 다음 문자로 바뀝니다. 예:
Hello world! -> IFMMP XPSME!
( IBSLR, EGUFV!
실제 챌린지에 대한 출력입니다. 이것은 1만큼 이동 한 예입니다.)
보시다시피 간격과 문장 부호는 조정되지 않은 상태로 유지됩니다. 그러나 메시지를 추측하지 못하도록 모든 문자는 대문자로 표시됩니다. 문자를 되 돌리면 메시지가 해독되고 편리하지만 메시지의 의미를 모르는 다른 사람들이 해독하기가 쉽습니다.
그래서 우리는 고급 형태의 암호를 사용하여 Caesar를 조금 도와 줄 것입니다 : Self-shifting Caesar Shift !
도전
당신의 임무는 암호화 할 문자열이 입력에 해당하는 프로그램을 작성하는 것입니다. 고급 시저 시프트는 다음과 같이 작동합니다.
1. Compute letter differences of all adjacent letters:
1.1. Letter difference is computed like this:
Position of 2nd letter in the alphabet
-Position of 1st letter in the alphabet
=======================================
Letter difference
1.2. Example input: Hello
H - e|e - l|l - l|l - o
7 - 5|5 - 12|12 - 12|12 - 15 Letter differences: 3; -7; 0; -3
=3| =-7| =0| =-3
2. Assign the letters continously a letter difference from the list,
starting at the second letter and inverting the differences:
2.1. 2nd letter: first difference, 3rd letter: second difference, etc.
2.2. The first letter is assigned a 1.
2.3. Example input: Hello with differences 3; -7; 0; -3
Letter || Value
=======||======
H || 1
E || -3
L || 7
L || 0
O || 3
3. Shift the letters by the value x they have been assigned:
3.1. In case of a positive x, the letter is shifted x letters to the right.
3.2. In case of a negative x, the letter is shifted |x| letters to the left.
3.3. In case of x = 0, the letter is not shifted.
3.4. If the shift would surpass the limits of the alphabet, it gets wrapped around
Example: Y + Shift of 2 --> A
3.5. Example input: See the table under 2.3.
|| || Shifted
Letter || Value || Letter
=======||=======||=========
H || 1 || I
E || -3 || B Program output:
L || 7 || S IBSLR
L || 0 || L
O || 3 || R
이 프로세스에서는 공백 및 구두점과 같은 기타 특수 기호를 건너 뜁니다. 프로그램에는 인쇄 가능한 ASCII 문자 만 포함 된 문자열이 제공됩니다. 함수 / 프로그램의 출력은 대문자 여야합니다.
이것은 code-golf 이므로 표준 허점이 적용되며 바이트 단위의 최단 답변이 이길 수 있습니다!
ZEN
, 예를 들어. Z
1만큼 이동하면 ... A
? (부수적으로, 05AB1E 답변은 Z
로 바 A
))
RELIEF
와 RELIES
같은 결과에 모두 암호로 바꾸다에 SRSFAG
?
E
-3
?