Hajtogatások
- Due May 14, 2023 by 11:59pm
- Points 10
- Submitting a file upload
1. Alapfüggvények hajtogatással
(5 pont)
Implementáljátok a funkcionális nyelveknek alábbi alapfüggvényeit, hajtogatást alkalmazva:
minimum :: Ord a => [a] -> a
Megkeresi egy lista legkisebb elemét.
minimum [3,4,1,2] ⇒ 1
sum :: Num a => [a] -> a
Kiszámolja egy lista elemeinek az összegét.
sum [1..10] ⇒ 55
and :: [Bool] -> Bool
Listákkal dolgozó logikai és művelet (üres tömb igaz).
and [True, True, False] ⇒ False
concat :: [[a]] -> [a]
Egy dupla mélységű listát kilapít.
concat ["a", "bb", "c"] ⇒ "abbc"
(++) :: [a] -> [a] -> [a]
Összefűz két azonos típusú listát.
[1..5] ++ [7..10] ⇒ [1, 2, 3, 4, 5, 7, 8, 9, 10]
length :: [a] -> Int
Kiszámolja egy listának a hosszát.
length [1..10] ⇒ 10
reverse :: [a] -> [a]
Megfordít egy listát.
reverse "mittomen" ⇒ "nemottim"
2. Feladatok hajtogatással (fold, scan)
(5 pont)
A fold, scan használatával:
1. írd meg a beszúrásos rendezést (egy üres kezdeti tömbbe szúrja be egyesével az elemeket, mindegyiket a helyére).
isort [1,4,6,3,2,11] ⇒ [1, 2, 3, 4, 6, 11]
2. Írj egy függvényt, mely átalakít egy listával megadott bit-sorozatot egy egész számmá.
fromBinary [1, 0, 1, 1] ⇒ 11
3. Írj egy függvényt, mely kiértékel egy együtthatókkal megadott polinomot egy adott értékre.
polynomial [7, 2, 1, 3] 4 ⇒ 487
4. Számold ki egy lista elemeinek az összegét, a részeredményeket is megtartva!
sums [1, 3..19] ⇒ [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
5. Generáld a fibonacci számsorozatot.
fibs ⇒ [1, 1, 2, 3, 5, 8, 13, 21, ...]