Skip to content
This repository was archived by the owner on Mar 9, 2023. It is now read-only.

PavelSaltykov/Semester4

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SPbU Homework and Tests

Semester 4
Homework 1
Homework 2
Homework 3

Homework 1

  1. Факториал. Solution
    Напишите на F# программу, считающую факториал. Подумайте, что делать, если ей передали отрицательное число.

  2. Фибоначчи. Solution
    Напишите программу, считающую (за линейное время) число Фибоначчи с заданным номером. Подумайте, что делать, если номер некорректный.

  3. Обращение списка. Solution
    Реализуйте функцию обращения списка, работающую за линейное время. Например, на списке [1; 2; 3] она должна возвращать [3; 2; 1].

  4. Степени двойки. Solution
    Реализовать функцию, которая принимает на вход n и m и возвращает список из элементов
    [2^n; 2^(n + 1); ...; 2^(n + m)].

  5. Поиск в списке. Solution
    Реализовать функцию, которая выдает первую позицию вхождения заданного числа в список.

Homework 2

  1. map, filter, fold. Solution
    Реализовать три варианта функции, подсчитывающей количество четных чисел в списке (с использованием стандартных функций map, filter, fold). Использование рекурсии не допускается, зато нужен FsCheck для проверки функций на эквивалентность.

  2. map для деревьев. Solution
    Реализовать функцию, применяющую функцию к каждому элементу двоичного дерева и возвращающую новое двоичное дерево, каждый элемент которого — результат применения функции к соответствующему элементу исходного дерева (map для деревьев).

  3. Дерево разбора. Solution
    Посчитать значение дерева разбора арифметического выражения, заданного через вложенные discriminated union-ы.

  4. Простые числа. Solution
    Реализовать функцию, генерирующую бесконечную последовательность простых чисел.

Homework 3

  1. Бета-редукция. Solution
    Выполнить бета-редукцию λ-терма ((λa.(λb.b b) (λb.b b)) b) ((λc.(c b)) (λa.a)).

  2. S K K. Solution
    Докажите, что S K K = I.

  3. Лямбда-интерпретатор. Solution
    Реализовать интерпретатор лямбда-выражений, выполняющий бета-редукцию по нормальной стратегии. Лямбда-выражения задаются через размеченные объединения. Должна поддерживаться альфа-конверсия для избежания захвата свободных переменных.

About

Progamming homework. 4th Semester of SPbU

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published