Sự miêu tả
Một ca Caesar là một mật mã đơn âm rất đơn giản trong đó mỗi chữ cái được thay thế bằng một chữ cái sau nó trong bảng chữ cái. Thí dụ:
Hello world! -> IFMMP XPSME!
( IBSLR, EGUFV!
là đầu ra cho thử thách thực tế, đây là một ví dụ về dịch chuyển bằng 1.)
Như bạn có thể thấy, khoảng cách và dấu chấm câu vẫn không được đánh dấu. Tuy nhiên, để tránh việc đoán tin nhắn, tất cả các chữ cái đều được viết hoa. Bằng cách chuyển các chữ cái trở lại, tin nhắn đã được giải mã, thuận tiện, nhưng cũng thực sự dễ dàng giải mã bởi những người được cho là không biết tin nhắn có nghĩa là gì.
Vì vậy, chúng tôi sẽ giúp Caesar một chút bằng cách sử dụng một hình thức mật mã nâng cao của anh ấy: Dịch chuyển Caesar tự dịch chuyển !
Thử thách
Nhiệm vụ của bạn là viết một chương trình hoặc hàm, được cung cấp một chuỗi để mã hóa, đưa ra chuỗi được mã hóa tương ứng với đầu vào. Ca Caesar tiên tiến hoạt động như thế này:
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
Dấu cách và các ký hiệu đặc biệt khác, chẳng hạn như dấu chấm câu được bỏ qua trong quy trình này. Đảm bảo rằng chương trình của bạn sẽ được cung cấp một chuỗi chỉ chứa các ký tự ASCII có thể in được. Đầu ra của chức năng / chương trình của bạn chỉ phải ở dạng chữ hoa.
Đây là môn đánh gôn , vì vậy các sơ hở tiêu chuẩn được áp dụng và có thể câu trả lời ngắn nhất bằng byte sẽ thắng!
ZEN
, ví dụ. Z
thay đổi 1 là ... A
? (như một ghi chú bên lề, câu trả lời 05AB1E biến Z
thành A
)
RELIEF
và RELIES
cả hai đều mã hóa cho cùng một kết quả SRSFAG
?
E
-3
?