Crée une implémentation du chiffrement rotatif, parfois aussi appelé chiffre de César.
Le chiffre de César est un chiffrement par décalage simple qui repose sur la transposition de toutes les lettres de l'alphabet à l'aide d'une clé entière comprise entre 0 et 26.
Utiliser une clé de 0 ou de 26 donne toujours le même résultat, en raison de l'arithmétique modulaire.
Chaque lettre est décalée d'autant de valeurs que la valeur de la clé.
La notation générale des chiffrements rotatifs est ROT + <key>.
Le chiffrement rotatif le plus couramment utilisé est ROT13.
Un ROT13 sur l'alphabet latin se présente comme suit :
Plain: abcdefghijklmnopqrstuvwxyz
Cipher: nopqrstuvwxyzabcdefghijklm
Il est plus robuste que le chiffre Atbash, car il offre 27 clés possibles, dont 25 utilisables.
Le texte chiffré est écrit avec la même mise en forme que l'entrée, y compris les espaces et la ponctuation.
omg donne trl
c donne c
Cool donne Cool
The quick brown fox jumps over the lazy dog. donne Gur dhvpx oebja sbk whzcf bire gur ynml qbt.
Gur dhvpx oebja sbk whzcf bire gur ynml qbt. donne The quick brown fox jumps over the lazy dog.
Tu dois implémenter la fonction rotate, qui prend un Int et une String, puis l'encode à l'aide d'un chiffrement par rotation.
Tu peux utiliser la signature fournie si tu as un doute sur les types, mais ne la laisse pas restreindre ta créativité.
Cet exercice travaille sur des données textuelles. Pour des raisons historiques, le type String de Haskell est synonyme de [Char], une liste de caractères. Pour manipuler les données textuelles plus efficacement, on peut utiliser le type Text.
Pour prolonger cet exercice de façon facultative, tu peux
- text à ta liste de dépendances dans package.yaml.Data.Text de la manière suivante :import qualified Data.Text as T
import Data.Text (Text)
Text, par exemple rotate :: Int -> Text -> Text, et faire appel aux combinateurs de Data.Text comme, par exemple, T.pack.Data.Text.String par Text dans RotationalCipher.hs, c'est-à-dire :rotate :: Int -> Text -> Text
Cette partie est entièrement facultative.
Inscris-toi sur Exercism pour apprendre et maîtriser Haskell avec 107 exercices, et un vrai mentorat humain, le tout gratuitement.