Arvutiteaduse instituut
  1. Kursused
  2. 2020/21 sügis
  3. Programmeerimiskeeled (MTAT.03.006)
EN
Logi sisse

Programmeerimiskeeled 2020/21 sügis

  • Info
  • Õppekava
  • Moodle
  • Loengud & Praksid
  • Lisamaterjalid
  • Küsi abi! (Fleep)

2. Haskelli kodutöö

Lahenda järgmised ülesanded Haskelli moodulisse Kt2.

Moodle'ist leiad ka lahendusfaili malli Kt2.hs.

Selle kodutöö ülesanded tuleb lahendada lihtrekursiooniga, mitte standardfunktsioone kasutades.

Funktsioonide null, head, tail, fst ja snd asemel kasuta mustrisobitust.

1. ülesanne (0.4p)

Tagastab paaride listi esimesed elemendid (samas järjekorras).

Näiteks:

esimesed [] ==> []
esimesed [(2, 3), (6, 4), (9, 9)] ==> [2, 6, 9]
esimesed :: [(a, b)] -> [a]
esimesed ps = undefined

2. ülesanne (0.4p)

Tagastab True, kui arv leidub listis, muidu False.

Näiteks:

otsi 3 [1, 2, 3, 4, 5, 6] ==> True
otsi 8 [1, 2, 3, 4, 5, 6] ==> False
otsi :: Integer -> [Integer] -> Bool
otsi n xs = undefined

3. ülesanne (0.4p)

Eemaldab listi viimase elemendi.

Näiteks:

dropLast []           ==> []
dropLast [1, 2, 3]    ==> [1, 2]
dropLast [3, 2, 1, 0] ==> [3, 2, 1]
dropLast :: [a] -> [a]
dropLast xs = undefined

4. ülesanne (0.4p)

Lisab tähe sõnesse. Kusjuures nulli või negatiivse indeksiga pannakse täht algusse, suurema indeksiga, kui sõne pikkus, lõppu.

Näiteks:

lisa (-1) 'a' "xyz" ==> "axyz"
lisa 1    'a' "xyz" ==> "xayz"
lisa 3    'a' "xyz" ==> "xyza"
lisa 2    'a' "xyz" ==> "xyaz"
lisa 400  'a' "xyz" ==> "xyza"
lisa :: Int -> Char -> String -> String
lisa i x ys = undefined

5. ülesanne (0.4p)

Väärtustab polünoomi kohal x. Iga listi element (a, n) tähistab polynoomi liidetavat a*x^n.

Näiteks: [(4.0,2),(1.0,1),(30.0,0)] tähendab 4*x^2 + x + 30 ja

arvuta [(4.0, 2), (1.0, 1), (30.0, 0)] 5 ==> 135.0
arvuta [(4.0, 2), (1.0, 1), (30.0, 0)] 2 ==> 48.0
arvuta []                              5 ==> 0
arvuta :: [(Double, Int)] -> Double -> Double
arvuta ps x = undefined

Selles ülesandes kasuta astendamiseks Haskellisse sisseehitatud operaatorit ^.

  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused