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

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

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

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

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, которая выдает список, получающийся после

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

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