Kurzusok
/
Haskell
Haskell
/
Feladatok
/
Rotációs rejtjel
Rotációs rejtjel

Rotációs rejtjel

Közepes

Utasítások

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.

Példák

  • ROT5: az omg eredménye trl
  • ROT0: a c eredménye c
  • ROT26: a Cool eredménye Cool
  • ROT13: a The quick brown fox jumps over the lazy dog. eredménye Gur dhvpx oebja sbk whzcf bire gur ynml qbt.
  • ROT13: a Gur dhvpx oebja sbk whzcf bire gur ynml qbt. eredménye The quick brown fox jumps over the lazy dog.

Tippek

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:

import qualified Data.Text as T
import           Data.Text (Text)
  • használd a Text típust, pl. rotate :: Int -> Text -> Text, és a Data.Text kombinátoraira például T.pack néven hivatkozz.
  • keresd meg a Data.Text dokumentációját.
  • cseréld le a RotationalCipher.hs fájlban a String minden előfordulását Text-re, azaz:
rotate :: Int -> Text -> Text

Ez a rész teljesen opcionális.


Forrás

WikipediaA hivatkozás új ablakban vagy lapon nyílik meg
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Haskell Exercism

Készen állsz elkezdeni a(z) Rotációs rejtjel feladatot?

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.