Vissza

8. labor

I. Írjunk egy Haskell programot, amelyben megadunk egy konstans Fesztivalok elemtípusú listát, majd II. Egy szövegállományban egy adott városról a következő adatok vannak eltárolva: városnév, népességszám, területméret, azaz adott a következő adatszerkezet:
data Varos = Varos {
vNev :: String,
vNepSzam :: Int,
vTerMeret :: Int
} deriving (Show)

Írjunk egy Haskell programot, amely az állományban levő adatok alapján létrehoz egy Varos elemtípusú listát, majd III. Egy listában kriptográfiai algoritmusok parméterei vannak eltárolva. Három fajta kripto algoritmust tárolhat a lista: StreamCipher, BlockCipher, BlockCipherMode. Egy StreamCipher típusú adat paraméterei a következők lehetnek: algoritmus név, kulcs méretek, és protokollok amelyekben használják. Egy BlockCipher típusú adat paraméterei a következők lehetnek: algoritmus név, kulcs méretek, blokkméret, és protokollok amelyekben használják. Egy BlockCipherMode típusú adat paraméterei a következő: algoritmus név. Pontosabban adott a következő adatszerkezet, illetve konstans lista:
type Name = String
type KeyLen = [Int]
type BlockLen = Int

type Protocol = String
data Crypto =
StreamCipher Name KeyLen [Protocol]
| BlockCipher Name KeyLen BlockLen [Protocol]
| BlockCipherMode Name
deriving (Show, Read, Eq)

lsCrypto = [
BlockCipher "AES" [128, 192, 256] 128 ["TLS", "PGP", "Kerberos"],
BlockCipherMode "ECB",
BlockCipherMode "CBC",
BlockCipher "Twofish" [128, 192, 256] 128 ["PGP", "Kerberos"],
StreamCipher "ChaCha20" [128, 256] ["TLS", "S/MIME", "SSH"],
BlockCipher "3DES" [168] 64 ["TLS", "PGP", "Kerberos"],
BlockCipherMode "CTR",
BlockCipherMode "GCM",
StreamCipher "RC4" [40..2048] ["Kerberos"]
]

Írjunk egy Haskell-programot, amely a listában levő adatok esetében: