Deskripsi
Caesar Shift adalah cipher monoalphabetic yang sangat sederhana di mana setiap huruf diganti dengan yang setelah itu dalam alfabet. Contoh:
Hello world! -> IFMMP XPSME!
( IBSLR, EGUFV!
adalah output untuk tantangan yang sebenarnya, ini adalah contoh dari pergeseran oleh 1.)
Seperti yang Anda lihat, spasi dan tanda baca tetap tidak terputus. Namun, untuk mencegah menebak pesan, semua huruf ditulis dengan huruf besar. Dengan menggeser kembali surat-surat itu, pesan itu diartikan, nyaman, tetapi juga sangat mudah diuraikan oleh orang lain yang seharusnya tidak tahu apa arti pesan itu.
Jadi, kami akan sedikit membantu Caesar dengan menggunakan bentuk sandi canggihnya: Caesar Shift yang Bergeser Sendiri !
Tantangan
Tugas Anda adalah menulis program atau fungsi, yang, diberi string untuk dienkripsi, mengeluarkan string terenkripsi yang sesuai dengan input. Caesar Shift canggih berfungsi seperti ini:
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
Spasi dan simbol khusus lainnya, seperti tanda baca dilewati dalam proses ini. Dijamin bahwa program Anda akan diberikan string yang hanya berisi karakter ASCII yang dapat dicetak. Output dari fungsi / program Anda hanya harus dalam huruf besar.
Ini adalah kode-golf , jadi celah standar berlaku, dan semoga jawaban tersingkat dalam byte menang!
ZEN
, misalnya. Z
digeser 1 adalah ... A
? (sebagai catatan, jawaban 05AB1E berubah Z
menjadi A
)
RELIEF
dan RELIES
untuk menyandikan hasil yang sama SRSFAG
?
E
-3
?