Задачи 1-115 по функциональному программированию (Напишите функцию, которая возвращала бы True. Напишите косвенный куин на Haskell’е)

Страницы работы

10 страниц (Word-файл)

Фрагмент текста работы

Задачи по функциональному программированию

1.   

Напишите функцию, которая возвращала бы True, если первые два элемента двух списков типа [a] соответственно равны друг другу, и False в противном случае (например, если длина одного из списков меньше 2).

2.   

Напишите функцию, зависящую от двух аргументов x и u, удаляющую все вхождения x в список u.

3.   

Сортировка слиянием. Даны два упорядоченных по возрастанию списка чисел x и y. Написать функцию f3 x y, которая в качестве значения выдает общий упорядоченный список элементов x и y. Например, f3 [1,3,5,7,8] [2,3,5,7] => [1,2,3,3,5,5,7,7,8].

4.   

Определите функцию f s, вычисляющую знакочередующуюся сумму

a1a2+a3a4 +...+(–1)k ak для списка s, имеющего вид [a1, a2,..., ak].

5.   

Определите умножение целых чисел через сложение и вычитание. Используйте рекурсию по одному из сомножителей.

6.   

Напишите с помощью композиции условных выражений (if) функции от трех аргументов and3 x1 x2 x3  и or3 x1 x2 x3, совпадающие по результату с встроенными функциями  and [x1,x2,x3] и or [x1,x2,x3], соответственно.

7.   

Напишите функцию от двух аргументов x и n , которая создает список из n раз повторенных элементов x.

8.   

Напишите функцию, осуществляющую циклическую перестановку элементов в любом списке, например, [1,2,3,4,5] => [2,3,4,5,1].

9.   

Напишите функцию, которая из данного списка строит список списков его элементов, например, [1,2,3,4,5] => [[2],[3],[4],[5],[1]].

10.   

Определите функцию, зависящую от двух аргументов–списков u и v, которая вычисляет список всех элементов u, не содержащихся в v.

11.   

Определите функцию, зависящую от двух аргументов–списков u и v, которая вычисляет список всех элементов, содержащихся либо в u, либо в v, но не одновременно в u и v.

12.   

Определите функцию, которая меняет местами первый и последний элементы списка.

13.   

Определите функцию, результатом которой является сумма цифр натурального числа n.

14.   

Напишите функцию, единственным аргументом которой являлся бы список списков, объединяющую все эти списки в один.

15.   

Пусть тип дерева определен как

data IntegerTree  = IntLeaf Integer | IntBranch IntegerTree IntegerTree

deriving Show

Пример:

IntBranch (IntLeaf 2) (IntBranch (IntLeaf 6) (IntLeaf 9)) :: IntegerTree

Используя функцию mapTree, напишите функцию, которая вычисляет сумму листьев.

В приведенном примере должно получиться 17.

16.   

Пусть тип дерева определен как

data IntegerTree  = IntLeaf Integer | IntBranch IntegerTree IntegerTree

deriving Show

Пример:

IntBranch (IntLeaf 2) (IntBranch (IntLeaf 6) (IntLeaf 9)) :: IntegerTree

Используя функцию mapTree, напишите функцию, которая вычисляет количество вершин в дереве.

В приведенном примере должно получиться 5.

17.   

Пусть тип дерева определен как

data SimpleTree = SLeaf | SBranch SimpleTree SimpleTree

deriving Show

Пример:

SBranch SLeaf (SBranch SLeaf SLeaf) :: SimpleTree 

Напишите функцию, которая вычисляет количество внутренних вершин в дереве.

В приведенном примере должно получиться 2.

18.   

Пусть тип дерева определен как

data Tree  = Leaf Integer | Branch Tree Integer Tree

deriving Show

Пример:

Branch (Leaf 5)  1 (Branch 2 (Leaf 4) 2 (Leaf 3)):: Tree

Напишите функцию, которая вычисляет сумму вершин.

В приведенном примере должно получиться 15.

19.   

Пусть тип дерева определен как

data Tree  = Leaf Integer | Branch Tree Integer Tree

deriving Show

Пример:

Branch (Leaf 5)  1 (Branch 2 (Leaf 4) 2 (Leaf 3)):: Tree

Напишите функцию, которая вычисляет наибольшее число в вершине.

В приведенном примере должно получиться 5.

20.   

Напишите функцию, которая определяет, является ли данное натуральное  число простым. Воспользуйтесь более общей задачей: ispr n m – "Число n не делится ни на одно число большее или  равное m и меньшее n". Имеем  ispr n m  – истинно, во–первых, если n = m, и, во-вторых, если истинно ispr n (m+1) и n не делится на m. Ваша функция должна быть частным случаем функции ispr n m.

21.   

Напишите функцию f  x  n  v, которая выдает список, получающийся после добавления x на n-е место в список v.

22.   

Напишите функцию f  n  v, которая выдает список, получающийся после удаления n-го элемента в списке v (счет элементов идет с 1).

23.   

Напишите функцию f s, которая выдает список, получающийся после

Похожие материалы

Информация о работе