Készíts olyan függvényt, amely egy paramétert vár (n
). Visszatérési értéke egy értékből és egy listából álló párok sorozat; az érték és a lista mindig kiadja az [1..n]
intervallumot.
separate :: Int -> [(Int, [Int])]
Példa:
separate 5 ↦ [(1,[2,3,4,5])
,(2,[1,3,4,5])
,(3,[1,2,4,5])
,(4,[1,2,3,5])
,(5,[1,2,3,4])]
A függvényt a beadandókezelő rendszerbe töltsd föl.
Definiáld a swap
függvényt, amely megcseréli egy pár elemeit!
swap :: (a, b) -> (b, a)
Definiáld két lista összefűzését, valamint listák listájának összefűzését.
(++) :: [a] -> [a] -> [a]
concat :: [[a]] -> [a]
import Prelude hiding ((++), concat)
Ehhez fel kell használni a listákra való mintaillesztést:
f (x:xs) = ...
Lista megfordítása.
reverse :: [a]{-véges-} -> [a]
import Prelude hiding (reverse)
Lista utolsó n
eleme, illetve az utolsó n
elem elhagyása.
reverseTake :: Int -> [a]{-véges-} -> [a]
reverseDrop :: Int -> [a]{-véges-} -> [a]
Példa:
reverseTake 3 [1..10] ↦ [8,9,10]
reverseDrop 3 [1..10] ↦ [1,2,3,4,5,6,7]
Definiáld az alábbi, listákra vonatkozó függvényeket mintaillesztéssel.
head :: [a] -> a
tail :: [a]{-nemüres-} -> [a]
null :: [a] -> Bool
import Prelude hiding (head, tail, null)
Szorozd össze egy lista elemeit. Az üres lista szorzata legyen 1.
product :: [Int]{-véges-} -> Int
import Prelude hiding (product)
Találd meg egy lista elemeinek minimumát.
minimum :: [Int]{-véges, nemüres-} -> Int
import Prelude hiding (minimum)
Számold meg, hány páros szám van egy szövegben.
numOfEvens :: [Int]{-véges-} -> Int
Definiáld listák páros összefűzését, és ennek a műveletnek a megfordítását.
zip :: [a] -> [b] -> [(a,b)]
unzip :: [(a, b)] -> ([a], [b])
Példa:
zip [1,2] "abc" ↦ [(1,'a'),(2,'b')]
unzip [(1,'a'),(2,'b')] ↦ ([1,2], "abc")
import Prelude hiding (zip)
Egész számok listájában oszd el a páros számokat kettővel. A páratlan számok maradjanak változatlanul.
halves :: [Int] -> [Int]
Példa:
halves [1..10] ↦ [1,1,3,2,5,3,7,4,9,5]