План:

  • Списъци
  •  let, where, caseguards


Задача 1: Напишете функция compress, която премахва последователните повторения в даден списък:

> compress [1,2,2,2,3,4,3,3,5]
[1,2,3,4,3,5]


Задача 2: Напишете функция duplicate, която повтаря всеки от елементите на даден списък:

> duplicate [1..5]
[1,1,2,2,3,3,4,4,5,5]


Задача 3: Напишете собствена имплементация на стандартната функция cycle, която съставя безкраен списък, повтаряйки циклично даден списък:

> take 10 . cycle $ [1..3]
[1,2,3,1,2,3,1,2,3,1]


Задача 4: Напишете функция quickSort, която сортира даден списък, използвайки едноименния алгоритъм:
> quickSort [1,4,2,1,4,3,2,3]
[1,1,2,2,3,3,4,4]


Задача 5: Напишете функция mergeSort, която сортира даден списък, използвайки едноименния алгоритъм. Използвайте функцията splitAt.
> mergeSort [1,4,2,1,4,3,2,3]
[1,1,2,2,3,3,4,4]


Задача 6: Напишете собствена имплементация на стандартните функции zip и unzip:

> zip [1..5] [3..100]
[(1,3),(2,4),(3,5),(4,6),(5,7)]

> unzip [(1,3),(2,4),(3,5),(4,6),(5,7)]
([1,2,3,4,5],[3,4,5,6,7])


Задача 7: Преложете реализация на стандартната функция reverse:

> reverse [1..5]
[5,4,3,2,1]


Задача 8: Преложете реализация на стандартната функция iterate:

> take 5 $ iterate (*2) 1
[1,2,4,8,16]



Last modified: Monday, 19 December 2016, 5:22 PM