Készítsd el az Atbash-rejtjel implementációját. Ez egy ősi titkosítási rendszer, amely a Közel-Keleten született.
Az Atbash-rejtjel egy egyszerű helyettesítő rejtjel, amely az ábécé összes betűjét megfordítja, így a kapott ábécé hátulról előre halad. Az első betűt az utolsóra cseréli, a másodikat az utolsó előttire, és így tovább.
A latin ábécéhez tartozó Atbash-rejtjel így néz ki:
Plain: abcdefghijklmnopqrstuvwxyz
Cipher: zyxwvutsrqponmlkjihgfedcba
Ez egy nagyon gyenge rejtjel, mert csak egyetlen lehetséges kulcsa van, ráadásul egyszerű monoalfabetikus helyettesítő rejtjel. A rejtjel korában azonban ez talán nem jelentett problémát.
A rejtjelszöveget rögzített hosszúságú csoportokban írjuk le, a hagyományos csoportméret 5 betű, a számokat változatlanul hagyva, az írásjeleket pedig kihagyjuk. Ezzel nehezebb a szóhatárok alapján következtetni. Minden szöveg kisbetűvel lesz kódolva.
test kódolása: gvhg
x123 yes kódolása: c123b vh
gvhg dekódolása: test
gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt dekódolása: thequickbrownfoxjumpsoverthelazydog
Meg kell valósítanod a decode és encode függvényeket, amelyek Atbash-rejtjel segítségével dekódolnak, illetve kódolnak egy String-et.
Használhatod a megadott szignatúrát, ha nem vagy biztos a típusokban, de ne hagyd, hogy ez korlátozza a kreativitásodat.
Ez a feladat szöveges adatokkal dolgozik. Történelmi okokból a Haskell String típusa megegyezik a [Char] típussal, ami karakterek listája. A szöveges adatok hatékonyabb kezeléséhez használhatod a Text típust.
A feladat opcionális kiterjesztéseként a következőket teheted:
- text-et a package.yaml fájlban lévő függőségeid listájára.Data.Text modult a következőképpen:import qualified Data.Text as T
import Data.Text (Text)
Text típust, például decode :: Text -> Text, és hivatkozz a Data.Text kombinatoraira például a T.pack formában.Data.Text dokumentációját.String összes előfordulását Text-re az Atbash.hs fájlban, azaz:decode :: Text -> Text
decode cipherText = ...
encode :: Text -> Text
encode plainText = ...
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.