Cesta, krok 1
Zadáno v pondělí 3. 5.
K odevzdání v neděli 9. 5.
Tyto úlohy jsou pouze pro poutníky na cestě. Co dělá jaká funkce můžete rychle najít v knize, nebo na Hoogle.
- Napište funkci
enumerate
, která dostane seznam a vrátí stejně dlouhý seznam, kde každý původní prvek bude ve dvojici se svým indexem.
> enumerate ["A", "B", "C"] [(0, "A"), (1, "B"), (2, "C")]
- Napište funkci
getEven
, která dostane seznam a vrátí pouze ty jeho prvky, které jsou na sudém indexu. Využijte list comprehension a funkcienumerate
. Pokud si věříte, zkuste si najít, co v Haskellu děláfilter
a použijte jej místo list comprehension.
> getEven ["A", "B", "C", "D", "E"] ["A", "C", "E"]
- Napište funkci
vowelSum
, která dostane seznam písmen a vrátí součet indexů samohlásek. Zkuste na ověření "samohláskovosti" napsat speciální funkciisVowel
a nepoužívat v ní 10 ifů. Bude se hodit funkceelem
.
> vowelSum ['A', 'B', 'C', 'D', 'E'] 4 > vowelSum "ABCDE" 4
- Napište funkci
filterMask
, která dostane seznam nějakých prvků a stejně dlouhý seznam booleanů, a vrátí jen ty prvky, u kterých byl odpovídající boolean true.
> filterMask [1, 2, 3, 4, 5] [True, True, False, False, True] [1, 2, 5]
- Napište funkci
getMask
, která dostane seznam nějakých prvků a funkci, která bere jeden takový prvek a vrátí True nebo False. CelágetMask
by pak měla vrátit odpovídající seznam booelanů.
> getMask (/= 3) [1, 2, 3, 4, 5] [True, True, False, True, True]
Funkcím, které vracejí booleany, se někdy říká predikáty.
- Napište funkci
myFilter
, která dostane seznam a predikát, a vrátí jen ty prvky, pro které je predikát true. Použijte své funkce z (4) a (5)
> myFilter (/= 3) [1, 2, 3, 4, 5] [1, 2, 4, 5]
- Napište funkci
isTriangle
, která dostane tři celá čísla a má rozhodnout, zda může existovat trojúhelník s takto dlouhými stranami. Podobná funkce se někdy dává v praktické části u maturity z IVT. Chytřeji než sif
-y to nejde.
> isTriangle 3 4 5 True > isTriangle -10 4 5 False > isTriangle 1 1 1 True > isTriangle 3 4 5 True > isTriangle 5 5 11 False