La description
Un changement de César est un chiffre monoalphabétique très simple où chaque lettre est remplacée par celle qui la suit dans l'alphabet. Exemple:
Hello world! -> IFMMP XPSME!
( IBSLR, EGUFV!
est la sortie pour le défi réel, c'était un exemple de décalage de 1.)
Comme vous pouvez le voir, l'espacement et la ponctuation restent sans accord. Cependant, pour éviter de deviner le message, toutes les lettres sont en majuscules. En reculant les lettres, le message a été déchiffré, pratique, mais aussi très facile à déchiffrer par d'autres personnes censées ne pas savoir ce que signifie le message.
Nous allons donc aider un peu César en utilisant une forme avancée de son chiffre: le changement César auto-changeant !
Défi
Votre tâche consiste à écrire un programme ou une fonction qui, étant donné une chaîne à chiffrer, génère la chaîne chiffrée correspondant à l'entrée. Le Caesar Shift avancé fonctionne comme ceci:
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
Les espaces et autres symboles spéciaux, tels que la ponctuation, sont ignorés dans ce processus. Il est garanti que votre programme recevra une chaîne contenant uniquement des caractères ASCII imprimables. La sortie de votre fonction / programme doit être uniquement en majuscules.
Il s'agit de code-golf , donc les échappatoires standard s'appliquent, et la réponse la plus courte en octets peut gagner!
ZEN
, par exemple. Z
décalé de 1 est ... A
? (en guise de remarque, la réponse 05AB1E se transforme Z
en A
)
RELIEF
et RELIES
pour les deux chiffrer au même résultat SRSFAG
?
E
-3
?