Készítsd el a rotációs rejtjel megvalósítását, amelyet néha Caesar-rejtjelnek is neveznek.
A Caesar-rejtjel egy egyszerű eltolásos rejtjel, amely az ábécé összes betűjét egy 0 és 26 közötti egész kulcs segítségével tolja el.
Ha 0 vagy 26 a kulcs, a moduláris aritmetika miatt mindig ugyanazt kapod eredményül.
A betűt annyival toljuk el, amennyi a kulcs értéke.
A rotációs rejtjelek általános jelölése a ROT + <key>.
A leggyakrabban használt rotációs rejtjel a ROT13.
A ROT13 a latin ábécén a következőképpen néz ki:
Plain: abcdefghijklmnopqrstuvwxyz
Cipher: nopqrstuvwxyzabcdefghijklm
Erősebb, mint az Atbash-rejtjel, mert 27 lehetséges kulcsa van, amelyek közül 25 használható.
A rejtjelezett szöveget ugyanolyan formázással írjuk ki, mint a bemenetet, a szóközöket és az írásjeleket is beleértve.
omg eredménye trl
c eredménye c
Cool eredménye Cool
The quick brown fox jumps over the lazy dog. eredménye Gur dhvpx oebja sbk whzcf bire gur ynml qbt.
Gur dhvpx oebja sbk whzcf bire gur ynml qbt. eredménye The quick brown fox jumps over the lazy dog.
Meg kell valósítanod a rotate függvényt, amely egy Int és egy String értéket vesz át,
majd rotációs rejtjellel kódolja azt.
Ha nem vagy biztos a típusokban, nyugodtan használd a megadott szignatúrát, de ne hagyd,
hogy az korlátozza a kreativitásodat.
Ez a feladat szöveges adatokkal dolgozik. Történelmi okokból a Haskell String típusa
ugyanazt jelenti, mint a [Char], azaz karakterek listája. A szöveges adatok hatékonyabb
kezelésére a Text típus használható.
A feladat opcionális kiterjesztéseként a következőket teheted:
- text sort a package.yaml függőségi listájához.Data.Text modult a következő
módon:import qualified Data.Text as T
import Data.Text (Text)
Text típust, pl. rotate :: Int -> Text -> Text, és a Data.Text
kombinátoraira például T.pack néven hivatkozz.Data.Text dokumentációját.String minden előfordulását Text-re, azaz:rotate :: Int -> Text -> Text
Ez a rész teljesen opcionális.
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Haskell nyelvet 107 feladat segítségével, valódi emberi mentorálással, mindez ingyen.